home *** CD-ROM | disk | FTP | other *** search
/ Freelog 22 / freelog 22.iso / Prog / Djgpp / RHIDE14B.ZIP / doc / rhide / rhide.txt < prev    next >
Encoding:
Text File  |  1997-10-01  |  162.2 KB  |  4,466 lines

  1. START-INFO-DIR-ENTRY
  2. * RHIDE: (rhide.inf).   Documentation about RHIDE, an IDE for DJGPP or Linux.
  3. END-INFO-DIR-ENTRY
  4.  
  5. This is the documentation for the Integrated Development Environment RHIDE.
  6.  
  7. Copyright (C) 1996,1997 Robert Höhne
  8.  
  9. This documentation may be freely distributed with the RHIDE package or any
  10. part thereof, provided this copyright notice is left intact on all copies.
  11.  
  12. RHIDE
  13. *****
  14.  
  15.    Table of Contents
  16.    *****************
  17. 1. Introduction
  18.   1.1 Copying
  19.   1.2 Installing RHIDE
  20.   1.2.1 Configuring RHIDE
  21.   1.3 What is RHIDE?
  22.   1.4 Requirements
  23.   1.5 Getting started
  24.   1.5.1 Supported languages
  25.   1.5.2 Debugging RHIDE
  26.   1.6 The program GPR2MAK.EXE
  27.   1.7 First steps with RHIDE
  28.   1.7.1 What are these so called projects
  29.   1.7.2 Creating your first project
  30.   1.8 Environment variables
  31.   1.8.1 Setting environment variables for RHIDE
  32.   1.8.2 Where to store the environment file
  33. 2. General information about how RHIDE works
  34.   2.1 Known suffixes
  35.   2.2 Syntax of arguments
  36.   2.3 Running under Windows 95
  37.   2.4 Running under OS/2
  38.   2.5 Running under Windows NT
  39.   2.6 Running under Linux
  40.   2.7 General use of RHIDE
  41.   2.7.1 Creating a program
  42.   2.7.1.1 Creating a program without a project
  43.   2.7.2 Creating a library
  44.   2.7.3 Saving/Loading the options
  45. 3. Description of the pull-down menus
  46.   3.1 System menu
  47.   3.1.1 About
  48.   3.1.2 Bug report
  49.   3.1.3 FSDB
  50.   3.1.4 GREP
  51.   3.1.5 GDB
  52.   3.1.6 Refresh Desktop
  53.   3.1.7 Calculator
  54.   3.1.8 Puzzle
  55.   3.1.9 Calender
  56.   3.1.10 ASCII table
  57.   3.2 File
  58.   3.2.1 Open
  59.   3.2.2 New
  60.   3.2.3 Save
  61.   3.2.4 Save as
  62.   3.2.5 Save all
  63.   3.2.6 DOS Shell
  64.   3.2.7 Exit
  65.   3.3 Edit
  66.   3.3.1 Undo
  67.   3.3.2 Redo
  68.   3.3.3 Cut
  69.   3.3.4 Copy
  70.   3.3.5 Paste
  71.   3.3.6 Show Clipboard
  72.   3.3.7 Clear
  73.   3.3.8 Copy to Windows clipboard
  74.   3.3.9 Paste from Windows clipboard
  75.   3.3.10 Expand all tabs
  76.   3.3.11 Compact text
  77.   3.3.12 Macro
  78.   3.3.12.1 Record
  79.   3.3.12.2 Stop
  80.   3.3.12.3 Play
  81.   3.4 Search
  82.   3.4.1 Find
  83.   3.4.2 Replace
  84.   3.4.3 Search again
  85.   3.4.4 Goto line
  86.   3.4.5 Jump to function
  87.   3.4.6 Next message
  88.   3.4.7 Previous message
  89.   3.5 Run
  90.   3.5.1 Run
  91.   3.5.2 Step over
  92.   3.5.3 Trace into
  93.   3.5.4 Go to cursor
  94.   3.5.5 Program reset
  95.   3.5.5.1 Main function
  96.   3.5.6 Arguments
  97.   3.6 Compile menu
  98.   3.6.1 Compile
  99.   3.6.2 Make
  100.   3.6.3 Link
  101.   3.6.4 Build all
  102.   3.7 Debug
  103.   3.7.1 Set/Reset Breakpoint
  104.   3.7.2 Evaluate/Modify
  105.   3.7.3 Watch an expression
  106.   3.7.4 Breakpoints
  107.   3.7.5 Disassembler window
  108.   3.7.6 Call stack
  109.   3.7.7 List of Functions
  110.   3.8 Project
  111.   3.8.1 Open project
  112.   3.8.2 Close project
  113.   3.8.3 Add item
  114.   3.8.4 Delete item
  115.   3.8.5 Local options
  116.   3.8.6 Includes
  117.   3.8.7 Main targetname
  118.   3.8.8 Primary file
  119.   3.8.9 Clear dependencies
  120.   3.8.10 Delete rebuildable files
  121.   3.8.11 Write Makefile
  122.   3.9 Options
  123.   3.9.1 Directories
  124.   3.9.1.1 Include directories
  125.   3.9.1.2 Library directories
  126.   3.9.1.3 Object directories
  127.   3.9.1.4 Sources directories
  128.   3.9.1.5 Standard headers
  129.   3.9.2 C/C++-Compiler
  130.   3.9.2.1 Warnings
  131.   3.9.2.2 Optimizations
  132.   3.9.2.3 Debugging
  133.   3.9.2.4 C options
  134.   3.9.2.5 CXX options
  135.   3.9.2.6 Pascal options
  136.   3.9.2.7 Fortran options
  137.   3.9.2.8 How to toggle these flags
  138.   3.9.3 Libraries
  139.   3.9.4 Linker options
  140.   3.9.5 Compiler options
  141.   3.9.6 Environment
  142.   3.9.6.1 Colors
  143.   3.9.6.2 Editor options
  144.   3.9.6.3 Preferences
  145.   3.9.6.4 Mouse options
  146.   3.9.6.5 Reserved words
  147.   3.9.6.6 Pascal reserved words
  148.   3.9.6.7 C-Flags
  149.   3.9.6.8 CXX-Flags
  150.   3.9.6.9 Pascal-Flags
  151.   3.9.6.10 Fortran-Flags
  152.   3.9.6.11 Warning-Flags
  153.   3.9.6.12 Debugging-Flags
  154.   3.9.6.13 Optimization-Flags
  155.   3.9.6.14 User words
  156.   3.9.7 Save options
  157.   3.9.8 Load options
  158.   3.10 Windows
  159.   3.10.1 Size/move
  160.   3.10.2 Zoom
  161.   3.10.3 Tile
  162.   3.10.4 Cascade
  163.   3.10.5 Next
  164.   3.10.6 Previous
  165.   3.10.7 Close
  166.   3.10.8 List
  167.   3.10.9 Project
  168.   3.10.10 UserScreen
  169.   3.11 Help
  170.   3.11.1 Help
  171.   3.11.2 RHIDE Help index
  172.   3.11.3 Syntax help submenu
  173.   3.11.3.1 Syntax help
  174.   3.11.3.2 Files to search
  175.   3.11.3.3 Options for searching
  176.   3.11.4 Index for syntax help
  177.   3.11.5 libc reference
  178.   3.11.6 Help about help
  179. 4. Detailed description of some parts of RHIDE
  180.   4.1 Selecting a window
  181.   4.2 How the editor works
  182.   4.2.1 Erasing commands
  183.   4.2.2 Cursor moving commands
  184.   4.2.3 Text selecting and searching commands
  185.   4.2.4 Block commands
  186.   4.2.5 Other commands
  187.   4.3 Some hints and problems
  188.   4.3.1 Problems with automatic dependencies
  189.   4.4 Project window
  190.   4.4.1 Items of your project
  191.   4.4.2 Open a project item
  192.   4.4.3 Dependencies of project item
  193.   4.4.4 Local options for a project item
  194.   4.5 Builtin compiler specs
  195.   4.6 Builtin variables
  196.   4.7 Change the defaults of RHIDE
  197.   4.8 Message window
  198.   4.9 Syntax highlighting
  199.   4.10 Checking the dependencies
  200.   4.11 What is Turbo Vision
  201.   4.12 How the dialogs work
  202.   4.13 Defining macros
  203.   4.14 The INFO Viewer
  204.   4.15 RCS and RHIDE
  205. 5. Debugging with RHIDE
  206.   5.1 Limitations of the integrated debugger
  207.   5.2 Dual display debugging
  208.   5.3 Using the integrated debugger
  209.   5.3.1 Stepping through the source code
  210.   5.3.2 Evaluating the contents of variables
  211.   5.3.3 Watching the contents of variables
  212.   5.4 Problems with C++ programs
  213.   5.5 Using Breakpoints
  214.   5.5.1 Setting a breakpoint
  215.   5.5.2 Modifying and setting a breakpoint
  216.   5.5.3 Problems with breakpoints
  217. 6. Debugging with RHGDB
  218. 7. Some FAQs
  219. 8. Index
  220. 9. Index of key commands
  221.  
  222. 1. Introduction
  223. ***************
  224.  
  225. 1.1 Copying
  226. ===========
  227.  
  228.  
  229. RHIDE is copyright by Robert Höhne.
  230. Parts of RHIDE are copyright by other people as noted in the
  231. source files.
  232.  
  233.   This program is free software; you can redistribute it and/or modify
  234.   it under the terms of the GNU General Public License as published by
  235.   the Free Software Foundation; either version 2 of the License, or
  236.   (at your option) any later version.
  237.  
  238.   This program is distributed in the hope that it will be useful,
  239.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  240.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  241.   GNU General Public License for more details.
  242.  
  243.   You should have received a copy of the GNU General Public License
  244.   along with this program; if not, write to the Free Software
  245.   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  246.  
  247. Additional conditions:
  248.  
  249. If you make any modifications on RHIDE, you have to leave the original
  250. copyright notice intact and add an comment about your modifications.
  251.  
  252. If you distribute the binaries for RHIDE from modified sources, then
  253. you have to add a notification which is printed at startup of RHIDE
  254. and in the about box to tell the user that you have made modifications
  255. and that it is not the binary from the original sources distributed by me.
  256.  
  257. If you distribute the sources for RHIDE, you are not allowed to distribute
  258. the full modified sources for the Turbo Vision library because of the
  259. copying conditions by Borland International.
  260.  
  261. If you want to include RHIDE (binaries and/or sources) in a commercial
  262. product (on a CD-ROM for a book or something else) contact me first.
  263.  
  264. For contacting the author send electronic mail to
  265.  
  266. Robert.Hoehne@Mathematik.TU-Chemnitz.DE
  267.  
  268. (valid until at least 30. September 1997)
  269.  
  270. or paper mail to
  271.  
  272. Robert Höhne
  273. Am Berg 3
  274. D - 09573 Dittmannsdorf
  275. Germany
  276.  
  277. 1.2 Installing RHIDE
  278. ====================
  279.  
  280. There are two archives
  281.  
  282. `rhide??b.zip'
  283.      This contains the executables and the documentation for RHIDE running on
  284.      DJGPP
  285.  
  286. `rhide-?.?-1.i386.rpm'
  287.      This is a RPM package with the binaries of RHIDE for Linux.
  288.  
  289. `rhide??s.zip'
  290.      This contains the sources of RHIDE for DJGPP.
  291.  
  292. `rhide-?.?-1.src.rpm'
  293.      This is a RPM package with the sources of RHIDE for Linux.
  294.  
  295. NOTE: The sources for the Linux and DJGPP versions are of course in its core
  296. the same, there are only differences in the text-file formats (CR or CR/LF)
  297. and the project files differ and the DJGPP sources contain some additional
  298. patches for the libc library to fix some known bugs there. But in general
  299. both archives can be used on both systems (after some cosmetic changes).
  300.  
  301. where `??' in the above filenames stand for the digits of the actual version
  302. of RHIDE.
  303.  
  304. These archives can be found at The RHIDE home page, at this URL:
  305.  
  306.      http://www.tu-chemnitz.de/~rho/rhide.html
  307.  
  308. (valid until at least 30. Sepetember 1997) or at any ftp site, which mirrors
  309. DJGPP.
  310.  
  311. The RPM packackes can be found at sunsite mirrors and/or also in some Linux
  312. distributions.
  313.  
  314. To install these archives, unzip them in the DJGPP-root directory, like any
  315. other DJGPP package.
  316.  
  317. To install the Linux RPM packages, use your favotite install program (most
  318. Linux distributions allow to install RPM packages) or install it with the
  319. Redhat package manager itself.
  320.  
  321. 1.2.1 Configuring RHIDE
  322. -----------------------
  323.  
  324. In most cases do nothing to configure RHIDE. But there are some special
  325. things, which must be configured which have mostly to do with the editor (or
  326. better) the keyboard layout.
  327.  
  328. The editor of RHIDE is configurable for the keyboard. For this it uses a text
  329. file `keybind.txt', which is searched in the following directories (in that
  330. order). If it was not found in any of these directories RHIDE uses builtin
  331. defaults. For more information about creating (customizing) the file and
  332. about the syntax of that file See Documentation about the keyboard in "SET's
  333. editor", or point your Web browser to http://editor.html
  334.  
  335.    * The current directory
  336.  
  337.    * The contents of the variable `$(RHIDE_SHARE)' it is set.
  338.  
  339.    * The contents of the variable `$(HOME)' it is set.
  340.  
  341.    * `%DJDIR%/share/rhide'
  342.  
  343. The binary archive of RHIDE includes already the config files for the US
  344. keyboard layout (`us.txt') and many others, which are based on the Linux
  345. keytables. If you have problems with the keyboard layout try to copy one of
  346. the files to `keybind.txt' (probably the one, which has a name similar to
  347. your country).
  348.  
  349. RHIDE also contains the file `keybind.txt' which IS `us.txt'.
  350.  
  351. As an example, if you are are using a German keyboard, and you have installed
  352. `keyb.com' as your keyboard driver program, you need to copy `de.txt' to
  353. `keybind.txt' otherwise (for example) the keys <y> and <z> are exchanged.
  354.  
  355. If you are using a keyboard driver (like I), which converts the scancodes of
  356. the keys (`keyb.com' does that NOT) you will probably not need the file
  357. `de.txt' (but the default `keybind.txt').
  358.  
  359. For configuring RHIDE on Linux (especially when running under X) See Section
  360. 2.6
  361.  
  362. 1.3 What is RHIDE?
  363. ==================
  364.  
  365. What is RHIDE? RHIDE is an Integrated Development Environment for compiling
  366. C- or C++-files (GNU-Assembler source files also supported) in an
  367. environment, which has an integrated editor where you can edit your source
  368. files and a project management, where you can define, which files are needed
  369. to build a program or a library.
  370.  
  371. For what stands the name RHIDE? This has nothing mystic in it. It comes
  372. simply from my initials RH and IDE (Integrated Development Environment).
  373.  
  374. RHIDE works like the IDE from Borland, which comes with Turbo C++ 3.1 and is
  375. written with the Turbo Vision library, which I have ported to use with DJGPP.
  376. Features of this IDE are:
  377.    - Syntax highlighting is now supported and you can customize all colors on
  378.      your desktop.
  379.  
  380.    - You can redirect the stdout and stderr from your program to a window in
  381.      the IDE.
  382.  
  383.    - You can generate a makefile for your project, so you can build the
  384.      program also without the IDE.
  385.  
  386.    - Most of the commandline options of GCC can be customized.
  387.  
  388.    - You can also build a library instead of an executable.
  389.  
  390.    - When saving a file to disk, the modification time of this file will be
  391.      set to the time of the last modification in the editor.
  392.  
  393.    - You can interrupt external programs (the compilers or your program) by
  394.      pressing <Ctrl+C> or <Ctrl+Break> which are ignored by the IDE. That
  395.      means also, that you cannot interrupt the IDE by pressing these keys. If
  396.      you want to enable this, compile the IDE without the `-DNO_BREAK'-flag.
  397.  
  398.    - The integrated debugger. You can debug your program within RHIDE by
  399.      executing each source line of your code and evaluating/modifying
  400.      variables and expressions.
  401.  
  402.    - You can define another compiler to compile your source files.
  403.  
  404. In addition to RHIDE I have included a stand-alone debugger (called
  405. `rhgdb.exe'), which is GDB 4.16 with a Turbo Vision user interface.
  406.  
  407. 1.4 Requirements
  408. ================
  409.  
  410. RHIDE works under and is compiled with DJGPP V2.01.  To compile your programs
  411. you need a working GCC-configuration, that means, GCC must be found in your
  412. path. Because DJGPP works only under DPMI you need a DPMI-Server.  If you run
  413. it under Windows 3.1(1)/95, you have DPMI. Under MS-DOS you need either a
  414. memory-manager, which give you DPMI-services (I think QEMM is it, EMM386 has
  415. no DPMI-support), or you use CWSDPMI, the free DPMI-server from Charles W.
  416. Sandmann, which you can find on SimTel-ftp-sites. I use it and it works fine
  417. for me.
  418.  
  419. The builtin editor uses a simple heuristic to check, if a file is in UNIX or
  420. DOS text format. It checks the first 1024 Bytes, and if there is a lf without
  421. a cr, all lf's will be translated to cr/lf's. This is done at first only in
  422. memory. But if you save your file to disk, it will be saved in DOS text
  423. format.
  424.  
  425. RHIDE will work correctly only with DJGPP version 2.01 or higher. If you have
  426. installed DJGPP 2.0, you will run into problems when the commandline passed
  427. to the called compilers or the linker will exceed the 126 character limit.
  428. There is a new technique used from DJGPP 2.01 on, which programs compiled
  429. under 2.0 don't understand.
  430.  
  431. 1.5 Getting started
  432. ===================
  433.  
  434. To run RHIDE type
  435.      rhide [options] ['file-name']
  436. or
  437.      rhide [options] 'project-name' [options]
  438. Here stands 'file-name', for a file, which you want to open at start up.  If
  439. it has no suffix it is assumed to be a 'project-name'.
  440.  
  441. 'project-name' stands for a name of your project. If you don't type it, RHIDE
  442. searches the current directory for a project file. If there exists only one,
  443. it will be opened. If there exist more than one or none, RHIDE will not open
  444. a project, you have to do it manually.  (See Section 3.2.1 project)
  445.  
  446. Possible options are for debugging RHIDE itself (See Section 1.5.2).  If no
  447. project was open, you will see an empty desktop.  At the top-line of the
  448. screen you can see the menu. This is activated by pressing <F10> or by
  449. clicking with the mouse at this line.  Alternatively you can press <Alt> plus
  450. the highlighted character of a pull-down menu, e.g. to activate the *File*
  451. menu, press `Alt+F'. At the bottom is the status line with some hotkeys and
  452. their functions displayed.
  453.  
  454. Other options are:
  455.  
  456. `-H'
  457.      Do not install the console switch handler, which saves/restores the
  458.      modified keyboard layout. This options works only when running under
  459.      Linux.
  460.  
  461. `-S'
  462.      Tells RHIDE to use only 16bit access to the video memory under DJGPP,
  463.      becuase some video cards cannot handle the 32bit access.
  464.  
  465. `-E'
  466.      Dump all variables known to RHIDE (the builtins and the real environment
  467.      variables) to `stderr' end exit.
  468.  
  469. `-C'
  470.      Disable the handling of SIGINT
  471.  
  472. `-y'
  473.      Use long filenames (only under Windows 95)
  474.  
  475. `-n'
  476.      Do not use long filenames (only under Windows 95)
  477.  
  478. `-c'
  479.      Do not convert the case of any file name
  480.  
  481. `-h'
  482.      Show a short help about all the possible options.
  483.  
  484. `-b'
  485.      Use BIOS calls for setting and resetting the behavior of the 7th bit in
  486.      a color attribute (blinking or 16 background colors) instead of direct
  487.      outputs to the VGA registers.
  488.  
  489. `-k KEY_FILE'
  490.      The editor in RHIDE is now configurable also for the keyboard.  The
  491.      file, where the key bindings are stored, is searched at first in the
  492.      current directory; then in the directory `%DJDIR%/data'; and then in the
  493.      directory where the executable is. If all this fails default values are
  494.      taken.
  495.  
  496.      With this switch you can override the default name of `keybind.txt' to
  497.      whatever you want.
  498.  
  499. `-p'
  500.      Normally RHIDE converts all the num-pad keys to the equivalent keys on
  501.      the other keyboard (of course also by checking the <NumLock> key). With
  502.      this switch you can disable this.
  503.  
  504. `-G n'
  505.      Select which method is used for swapping the display. Currently there
  506.      are two, little different functions implemented.  If you have problems
  507.      with display swapping when in graphics mode, try to use another method
  508.      and see if that helps.
  509.  
  510. `-K'
  511.      Tell RHIDE, to use real BIOS calls for it's keyboard input. This is
  512.      needed sometimes, when you have installed some special keyboard drivers.
  513.  
  514. `-M'
  515.      This tells RHIDE to not to install the mouse callback function for
  516.      getting the mouse events. Instead of this RHIDE calls the mouse BIOS
  517.      functions for getting any event of the mouse. This option should be used
  518.      mainly when running under Windows NT (but there I select this now
  519.      automatically by default)
  520.  
  521. At the upper right corner of the screen you can see the free virtual/physical
  522. memory (where M stands for Megabytes, K for Kilobytes and B for Bytes), if
  523. enabled (See Preferences).
  524.  
  525. If you try to open a project, which does not exist, RHIDE will create a new
  526. one.  The way for creating a new project is done by RHIDE as follows.  If
  527. there exist in the directory of RHIDE (usually in %DJDIR%/bin) a project file
  528. with the root name of the executable and the suffix `.gpr', this file is
  529. copied as your new project file with all customizations, which you have done
  530. in it. If this standard project file doesn't exist, a new project file is
  531. created with the hardcoded defaults.
  532.  
  533. To create such a standard project file, change to the directory where the
  534. executable is and call the exe-file with the argument of its name without the
  535. suffix `.exe'. After leaving the program, the standard project file is
  536. created.
  537.  
  538. 1.5.1 Supported languages
  539. -------------------------
  540.  
  541. There is also support for multiple languages. For this RHIDE uses the GNU
  542. gettext library. With this lib it is possible to support multiple languages
  543. without changing any code of RHIDE, when adding a new language.
  544.  
  545. There are two ways for selecting the language. Either you set the environment
  546. variable LANGUAGE to the language you want or give it as a commandline
  547. argument to RHIDE. The normal way is by setting LANGUAGE. If you have
  548. installed RHIDE as described in the `readme', you should specify the language
  549. with a two character shortcut. Here is the list of the current supported
  550. languages together with the two character code:
  551.  
  552. `da'
  553.      Danish maintained by Erik Bachmann <ebp@dde.dk>
  554.  
  555. `de'
  556.      German maintained by Robert Höhne
  557.      <Robert.Hoehne@Mathematik.TU-Chemnitz.DE> (valid until at least 30.
  558.      September 1997)
  559.  
  560. `es'
  561.      Spanish maintained by Salvador Eduardo Tropea (SET) <ice@inti.edu.ar>
  562.  
  563. `fi'
  564.      Finnish maintained by Jari Anttonen <janttone@iwn.fi>
  565.  
  566. `fr'
  567.      French maintained by Eric Nicolas <nicolas@dsys.ceng.cea.fr>
  568.  
  569. `it'
  570.      Italian maintained by Normando Marcolongo <i094968@spv.ing.uniroma1.it>
  571.  
  572. `nl'
  573.      Dutch maintained by Martijn Laan <mlaan@cs.vu.nl>
  574.  
  575. `pt'
  576.      Portuguese maintained by Goncalo Farias <mad@telepac.pt>
  577.  
  578. `sv'
  579.      Swedish maintained by Christian Axbrink <sa9471@ida.utb.hb.se>
  580.  
  581. When you want to specify the language on the commandline, use the following
  582. syntax:
  583.      rhide -L LANGUAGE
  584. where LANGUAGE represents the language code.
  585.  
  586. If you do not specify any language, English is assumed.
  587.  
  588. Because it was not possible to get all the translations at the time when
  589. RHIDE was ready, I included only the message files (that are the files with
  590. the `.mo' suffix) as they are ready in the binary archive. That means that it
  591. is possible that you will see some strings in English instead of your
  592. language.
  593.  
  594. 1.5.2 Debugging RHIDE
  595. ---------------------
  596.  
  597. I have added some commandline options to debug the IDE itself. These options
  598. are the following:
  599.  
  600. `-dt'
  601.      Do not remove the temporary files which the IDE creates. The names of
  602.      these files will be printed to stderr.
  603.  
  604. `-dc'
  605.      Print to `stderr' the commands which the IDE executes.
  606.  
  607. `-dd'
  608.      Print to `stderr' how the IDE checks the dependencies.
  609.  
  610. `-df'
  611.      Print to `stderr' how the IDE searches for files.
  612.  
  613. `-ds'
  614.      Print to `stderr' how the IDE expands the specs.
  615.  
  616. `-da'
  617.      Turns on all of the above
  618.  
  619. You can also combine these options like `-dct', which is the same as `-dc
  620. -dt'.
  621.  
  622. To examine this debugging information, it is the best to use the redir
  623. command, to redirect the stderr to a file like
  624.      redir -e err rhide -da project
  625. which will redirect stderr to the file `err'.
  626.  
  627. Each of the letters above (after `-d') can be prefixed by a `-' or a `+' to
  628. explicitely turn the flag on or off.  For instance `-dc' and `-d+c' are the
  629. same and `-da-c' selects all debugging options except the `-dc' switch.
  630.  
  631. If you want to supply certain switches for RHIDE as a default, you may put
  632. them into the environment variable `$(RHIDEOPT)'.  The contents of this
  633. variable is used before the the real commandline is parsed.  That means you
  634. can overwrite the switches from the environment variable.
  635.  
  636. 1.6 The program GPR2MAK.EXE
  637. ===========================
  638.  
  639. This program can be used to create a makefile from your project-file.  It
  640. does exactly the same as the function which is selectable from the RHIDE menu
  641. (See Section 3.8.11).
  642.  
  643. In RHIDE you have only the possibility to say, if in the generated makefile
  644. all dependencies should be included or not. With `gpr2mak.exe' you can tell
  645. also to create recursively all the needed makefiles. This makes sense only if
  646. you have included other projects in your project.
  647.  
  648. Here are the possible commandline options for `gpr2mak.exe'.
  649. `-d'
  650.      Include all dependencies in the makefile
  651.  
  652. `-d-'
  653.      Include only the needed dependencies to create the final program or
  654.      library.
  655.  
  656. `-r'
  657.      Call `gpr2mak.exe' recursively, if there are other projects part of the
  658.      project.
  659.  
  660. `-r-'
  661.      Do not call `gpr2mak.exe' recursively.
  662.  
  663. `-o OUTFILE'
  664.      Use `OUTFILE' instead of the project name (with the suffix `.mak') as
  665.      the created makefile. If you want to write the makefile to `stdout', use
  666.      `-' as `OUTFILE'.
  667.  
  668. And the complete syntax for calling `gpr2mak.exe' is also:
  669.  
  670.      gpr2mak.exe [-d[-]] [-r[-]] [-o OUTFILE] project-file
  671.  
  672. If you give no options, (the project-file must be given), `gpr2mak.exe'
  673. assumes the flags `-d- -r-' as default.
  674.  
  675. 1.7 First steps with RHIDE
  676. ==========================
  677.  
  678. Here I will give you some instructions for the first steps to get contact
  679. with RHIDE.
  680.  
  681. 1.7.1 What are these so called projects
  682. ---------------------------------------
  683.  
  684. A project for RHIDE is a file, which contains all the needed information
  685. required to build a program or library from one or more source files. Also
  686. all the other options which belong to the look and feel of your desktop are
  687. stored there.
  688.  
  689. In general RHIDE creates for each project two files. One for the project
  690. itself (it has the suffix `.gpr') and one for the desktop related things (it
  691. has the suffix `.gdt').
  692.  
  693. To create a new project either run rhide with a not existing project name as
  694. argument or open within RHIDE a project by selecting a name which is not
  695. existent.
  696.  
  697. 1.7.2 Creating your first project
  698. ---------------------------------
  699.  
  700. For the next instructions I will assume, that you want to create a project
  701. for the standard "Hello world" program in the current directory. Create now
  702. the new project by running
  703.  
  704.      rhide hello
  705.  
  706. and you will see an empty desktop and one window opened, the project window.
  707. This window will show you that there is no file defined for your project.  If
  708. the project window is selected, (it has a double frame), then hit there <Ins>
  709. and you will be prompted for adding an item to your project.
  710.  
  711. Type in the input line now `hello.c' and hit <ENTER>. Now hit <ESC> to leave
  712. the dialog. You will see now, that the project window contains a line with
  713. `hello.c'.
  714.  
  715. Now hit <ENTER> on that filename and you will get an empty editor window
  716. named `hello.c' prepended by the current directory. In this editor window you
  717. can type now the program:
  718.  
  719. #include <stdio.h>
  720.  
  721. int main()
  722. {
  723.   printf("Hello world!\n");
  724.   exit(0);
  725. }
  726.  
  727. Now you can select from the Run-menu the Run entry (or use the hotkey
  728. `Ctrl+F9') and RHIDE will do all the necessary steps to compile, link and
  729. execute the program.
  730.  
  731. If everything was correct (no typing errors) or some other error, you will
  732. get a message box where RHIDE tells you, that the program exited with an exit
  733. code of 0. (This is the value, which you have specified in your program above
  734. in the `exit(0);' statement) This box you can close with <ENTER> or <ESC>.
  735.  
  736. To see the output of the program, you can switch now to the user screen with
  737. `Alt+F5' or from the menu (Windows/User screen).  To return back to RHIDE hit
  738. any key.
  739.  
  740. 1.8 Environment variables
  741. =========================
  742.  
  743. RHIDE uses many environment variables for it's configuration and behavior.
  744. This includes also some standard variables, which are used by the in RHIDE
  745. linked libraries. These are:
  746.  
  747. $(LOCALEDIR)
  748.      This should point to the directory, where your locale files are stored.
  749.      If it is not set, RHIDE tries to get the system default value, which is
  750.      for Linux `/usr/share/locale' and for DJGPP `$(DJDIR)/share/locale'.
  751.  
  752. $(INFOPATH)
  753.      This is a pathlist of directories, where your INFO files are stored. If
  754.      not set, RHIDE tries the standard directory, which should for Linux
  755.      `/usr/info' and for DJGPP `$(DJDIR)/info'.
  756.  
  757. $(RHIDEOPT)
  758.      This variable can be used, to define global RHIDE commandline options.
  759.      The value of this variable is used, as if the contents are given on
  760.      commandline before any of the real commandline options. Which means,
  761.      they can be overwritten on the commandline.
  762.  
  763. $(ESCDELAY)
  764.      This variable is used *ONLY* in the Linux version, where it defines the
  765.      delay after pressing <ESC> to wait for another keypress to simulate an
  766.      <Alt> keycode. The value is given in milliseconds and defaults to 1000.
  767.  
  768. $(LANGUAGE)
  769.      This variable is used to specify the language, in which RHIDE should
  770.      communicate with you. The contents of this variable should be the ISO
  771.      2-character code of your country.
  772.  
  773. $(RHIDE_SHARE)
  774.      With this variable you can tell RHIDE where it should look at first for
  775.      it's configuration files.
  776.  
  777. 1.8.1 Setting environment variables for RHIDE
  778. ---------------------------------------------
  779.  
  780. There are some different ways for setting environment variables for RHIDE.
  781. One of them is to set them like any other environment variable on your
  782. system. But this means that these variables are visible also by all the other
  783. programs.
  784.  
  785. When using the DJGPP version, you can set them in your `djgpp.env' file
  786. either at the beginning as global variables for any DJGPP program or in a
  787. special section `[RHIDE]' only for RHIDE. Please read the doc about the
  788. format of the `djgpp.env' file for more information.
  789.  
  790. Derived from the technique used on DJGPP for setting environment variables
  791. which are visible only for DJGPP programs, I have added in RHIDE a similar
  792. thing. RHIDE can read environment variables also from a file called
  793. `rhide.env'.
  794.  
  795. The syntax of this file is very simple. Each line has one of the following
  796. syntax:
  797. VARIABLE=CONTENTS
  798.      Which means, that the environment variable `VARIABLE' should become the
  799.      contents `CONTENTS' where `CONTENTS' can be also a variable, which is
  800.      expanded at runtime.
  801.  
  802. .OTHER_ENV_FILE
  803.      Such a line (it begins with a dot) tells RHIDE to read in at that point
  804.      the file `OTHER_ENV_FILE' as environment file. The name `OTHER_ENV_FILE'
  805.      can be also an environment variable, which is expanded before reading
  806.      the file.
  807.  
  808. # comments
  809.      A line, which begins with a `#' means, that this line is ignored.  It
  810.      can be used for you to write there some comments about that file.
  811.  
  812. !VARIABLE=CONTENTS
  813.      This is the same syntax as without the ! at the beginning of the line
  814.      but it tells RHIDE to place the variable also in the environmen so also
  815.      other programs (called by RHIDE) can see this variable.
  816.  
  817. RHIDE is very powerful in handling the environment variables. Most of it is
  818. taken from the behavior of GNU make. On this great things depend, that a
  819. variable name can consist also of other variables, which are computed when
  820. the variable should be expanded.
  821.  
  822. As an example of this, you can take a look on the RHIDE sources in the
  823. `rhide.env' files. There I'm using, for instance, the RHIDE builtin variable
  824. $(RHIDE_OS) to define the libraries, which are linked in RHIDE depending on
  825. the operating system where RHIDE is built.
  826.  
  827. An other example is distributed with RHIDE in it's binary archives as
  828. `rhide_.env' which is commented and should be in a directory
  829. `.../share/rhide/' where the `...' stand for a different directory on
  830. different OS's. (on DJGPP it is %DJDIR% and on Linux it is /usr/local )
  831.  
  832. Here is a part of the environment file `rhide.var' in the main RHIDE source
  833. directory (which is included by `rhide.env' with
  834. .$(RHIDESRC)/rhide.var
  835.  
  836. RHIDE_OS_LIBS_Linux=ncurses gpm m
  837. RHIDE_OS_LIBS_DJGPP_idegc.exe=dbg
  838. RHIDE_OS_LIBS_DJGPP=$(RHIDE_OS_LIBS_DJGPP_$(MAIN_TARGET))
  839. RHIDE_OS_LIBS=$(RHIDE_OS_LIBS_$(RHIDE_OS))
  840.  
  841. The RHIDE builtin linker spec (See Section 4.5) includes also
  842. $(RHIDE_OS_LIBS) when linking. Since RHIDE can be built on DJGPP and Linux
  843. and on these different operating systems I have to link different libraries.
  844.  
  845. Description of the above: When linking on DJGPP the file `idegc.exe' (which
  846. is RHIDE) I have to include (in addition to all the other libraries)
  847. `libdbg.a', which contains all the DJGPP specific debugging functions. This
  848. is done at runtime by expanding RHIDE_OS_LIBS. Here are the steps, how RHIDE
  849. expands the variable RHIDE_OS_LIBS:
  850.  
  851. $(RHIDE_OS_LIBS)                      ->  $(RHIDE_OS_LIBS_$(RHIDE_OS))
  852. $(RHIDE_OS_LIBS_$(RHIDE_OS))          ->  $(RHIDE_OS_LIBS_DJGPP)
  853. $(RHIDE_OS_LIBS_DJGPP)                ->  $(RHIDE_OS_LIBS_DJGPP_$(MAIN_TARGET))
  854. $(RHIDE_OS_LIBS_DJGPP_$(MAIN_TARGET)) ->  $(RHIDE_OS_LIBS_DJGPP_idegc.exe)
  855. $(RHIDE_OS_LIBS_DJGPP_idegc.exe       ->  dbg
  856.  
  857. In a similar way it expands on Linux to
  858.  
  859. $(RHIDE_OS_LIBS) -> ncurses gpm m
  860.  
  861. 1.8.2 Where to store the environment file
  862. -----------------------------------------
  863.  
  864. RHIDE searches some known directories for the file `rhide.env' (and of course
  865. also other there defined included files).
  866.  
  867. At first it searches for a global file in `/usr/local/share/rhide' (on Linux)
  868. or `$(DJDIR)/share/rhide'. Then it searches in `$(HOME)' and at last in the
  869. current directory.
  870.  
  871. RHIDE does not only a search, it also loads the file, if it was found in any
  872. of the above mentioned directories. That means, if in all these directories
  873. `rhide.env' exists, it is loaded. This has the effect, that you can define
  874. some global defaults which can be overwritten with a `rhide.env' in the
  875. current or your home directory.
  876.  
  877. 2. General information about how RHIDE works
  878. ********************************************
  879.  
  880. In this section I will give you some comments about the concept of RHIDE.
  881. RHIDE works with the GNU compilers. As a result of this, most of the options
  882. are fixed and they are mostly also specific only for this compiler. If I
  883. speak about compilers, I mean GCC, which calls the right compilers for you.
  884. (`cpp' for preprocessing your input files, `cc1' for compiling C programs,
  885. `cc1plus' for compiling C++ programs and `as' for compiling assembler files
  886. and so on)
  887.  
  888. Selecting the right compiler for a specific file is done by RHIDE in the same
  889. way as GCC does it. It looks for the extension of the file and determines the
  890. language of this file.
  891.  
  892. 2.1 Known suffixes
  893. ==================
  894.  
  895. The list of the known suffixes is taken from GCC. Remember the fact, that GCC
  896. and RHIDE check the suffixes in a case sensitive way especially when running
  897. under Windows 95 (See Section 2.3).
  898.  
  899.    * Valid suffixes for C source files are
  900.     `.c'
  901.           Normal C source file
  902.  
  903.     `.i'
  904.           C source file, which doesn't need the preprocessor
  905.  
  906.    * Valid suffixes for C++ source files are
  907.     `.cc'
  908.     `.cpp'
  909.     `.cxx'
  910.     `.C'
  911.           Normal C++ source file
  912.  
  913.     `.ii'
  914.           C++ source file, which doesn't need the preprocessor
  915.  
  916.    * Valid suffixes for Objective C source files
  917.     `.m'
  918.           Normal Objective C source file
  919.  
  920.    * Valid suffixes for Pascal source files
  921.     `.p'
  922.     `.pas'
  923.           Normal Pascal source file
  924.  
  925.    * Valid suffixes for object files
  926.     `.o'
  927.           Normal object file
  928.  
  929.     `'
  930.           any other suffix, which has no predefined meaning
  931.  
  932.    * Valid suffixes for libraries
  933.     `.a'
  934.           Normal library file
  935.  
  936.    * Valid suffixes for executable files
  937.     `.exe'
  938.           Normal executable file for MS-DOS
  939.  
  940.     `.'
  941.           No suffix means the raw COFF image of an executable file. These can
  942.           be handled only by programs, which know about this format.  (DJGPP
  943.           programs know this)
  944.  
  945.    * Valid suffixes for include files
  946.     `.h'
  947.           Normal include files
  948.  
  949.     `.hpp'
  950.           Some people told me, that this suffix should also be treated as a
  951.           valid suffix for header files, so I applied it.
  952.  
  953.     `'
  954.           Theoretically there is no restriction for such a suffix, but RHIDE
  955.           searches and finds only files with the above suffixes in the
  956.           specified directories (See Section 3.9.1.1)
  957.  
  958.    * Valid suffixes for Assembler source files
  959.     `.s'
  960.           Normal Assembler source file
  961.  
  962.     `.S'
  963.           Assembler source file, which must be preprocessed by `cpp'. If you
  964.           have such files, there is a problem, when long filenames are not
  965.           enabled (default in MS-DOS), because RHIDE converts all filenames
  966.           in this situation to lower case. But you can add to the local
  967.           options for this item (See Section 3.8.5) the commandline argument
  968.           -X ASSEMBLER-WITH-CPP, to tell `GCC' to preprocess this file first
  969.           before assembling it.
  970.  
  971.    * Valid suffixes for Fortran source files
  972.     `.f'
  973.     `.for'
  974.           Normal Fortran source files
  975.  
  976.     `.F'
  977.     `.fpp'
  978.           Fortran source files which need not to be run through `cpp'.
  979.  
  980.    * Valid suffixes for ADA source files
  981.     `.adb'
  982.           Normal ADA source file
  983.  
  984.     `.ads'
  985.           ADA specs file
  986.  
  987.    * Valid suffixes for NASM
  988.     `.nsm'
  989.     `.asm'
  990.           Normal NASM source files.
  991.  
  992. 2.2 Syntax of arguments
  993. =======================
  994.  
  995. In RHIDE you can specify some arguments to other programs. These arguments
  996. must be a space separated list of strings. If you want to have one or more
  997. spaces as part of an argument, you have to enclose the whole argument in
  998. single or double quotes.
  999.  
  1000. 2.3 Running under Windows 95
  1001. ============================
  1002.  
  1003. With DJGPP 2.01 were many bugs fixed, which caused problems under Windows 95
  1004. with the long (and case sensitive) filenames. Now all filenames are shown in
  1005. lower case, except they contain characters with different case. That means,
  1006. all normal 8+3 DOS filenames, which are normally reported in Windows 95 in
  1007. upper cases, are automatically converted to lower case. For more information
  1008. about filename conversion look at the libc reference.
  1009.  
  1010. If you really need the filenames exactly as they are reported by the OS, you
  1011. can use the -C switch (See Section 1.5).
  1012.  
  1013. You can also run more than one instance of RHIDE at once, in several
  1014. DOS-boxes, because RHIDE creates and uses its own temp directory every time
  1015. it starts to disable conflicts, when running multiple compilers at the same
  1016. time. This is done by creating a directory in the directory pointed at by the
  1017. environment variables %TMPDIR%, %TEMP% or %TMP%, in that order, until one of
  1018. them exists. If none of them exists, the current directory is assumed. Then
  1019. RHIDE puts the value of this directory into the environment variable
  1020. %TMPDIR%. After leaving RHIDE this directory will be removed, if it is empty.
  1021.  
  1022. 2.4 Running under OS/2
  1023. ======================
  1024.  
  1025. Because I have no access to OS/2, I cannot say anything about it. But some
  1026. people said that they run RHIDE under OS/2 successfully, but there must be
  1027. the exclusive mouse access to the DOS window disabled.
  1028.  
  1029. 2.5 Running under Windows NT
  1030. ============================
  1031.  
  1032. 2.6 Running under Linux
  1033. =======================
  1034.  
  1035. Since RHIDE is now available also for Linux here some hints. In general you
  1036. will get the best results when you have installed RHIDE as a setuid root
  1037. program. I know, this might be a security problem but I have tried to make it
  1038. as secure as possible. After getting acces to the screen and the keyboard
  1039. RHIDE will switch back to your normal rights and does not use root rights any
  1040. more. It does not write any data or modify any file on disk with root rights
  1041. (except you are running as root of course).
  1042.  
  1043. The reason for this is the rudimentary support for fast access to the screen
  1044. and the totally hided acces to the keyboard in the Linux kernel.
  1045. Additionally when you want to use the dual monitor debugging feature of RHIDE
  1046. this is also needed, because RHIDE needs in that case access to the ports of
  1047. your monochrome video card.
  1048.  
  1049. Running RHIDE under X-Window is not full supported (but it is possible).
  1050. There are several reasons for this. The first is, that RHIDE uses in that
  1051. case only terminal functions for input and output. That means it depends
  1052. completetly on your terminfo database and these are (at least for me) in some
  1053. cases totally wrong. You can see this mostly that RHIDE does not handle
  1054. correct the keyboard. Other programs which use ncurses know this also and
  1055. have there own hardcaded patches but I do not want to do so.
  1056.  
  1057. To fix the keyboard conflicts whenrunning in a xterm, I distribute little
  1058. modified terminfo file `/usr/local/share/rhide/xterm-rhide' which you can
  1059. place in `/usr/lib/terminfo/x' or when you have no root access you can place
  1060. it also in `$HOME/.terminfo/x'.  And then to use this file simply set the
  1061. environment variable to this new terminal with
  1062.   export TERM=xterm-rhide
  1063. before running RHIDE in the xterm.
  1064.  
  1065. An other alternative is to run RHIDE in a rxvt terminal but there you have to
  1066. set also explicitely the TERM variable, because it is set mostly to
  1067. xterm-color.
  1068.   export TERM=rxvt
  1069.  
  1070. 2.7 General use of RHIDE
  1071. ========================
  1072.  
  1073. 2.7.1 Creating a program
  1074. ------------------------
  1075.  
  1076. For creating a program, RHIDE allows you to define multiple source files
  1077. which should be compiled and linked to your final program. This is done by
  1078. creating a project. In this project you insert your source files (and not all
  1079. the include files).
  1080.  
  1081. After a source file (which is inserted in your project) compiled at least
  1082. once, RHIDE knows about all dependencies of this file, so this file will be
  1083. compiled again only, if one of the include files have changed.
  1084.  
  1085. 2.7.1.1 Creating a program without a project
  1086. ............................................
  1087.  
  1088. Because of many requests of users I made RHIDE to work also without using a
  1089. project. This may be good, if you have a single file, but if your program
  1090. should be build from more than one file I suggest you to use a project.
  1091.  
  1092. If you have only one editor window opened, the name of the resulting program
  1093. is taken from the name of the source file by removing the suffix and on DJGPP
  1094. appending `.exe'.
  1095.  
  1096. If you have more than one files opened, I saw no other way for determining
  1097. the name of the produced program, than naming it `aout' (on DJGPP `aout.exe').
  1098.  
  1099. 2.7.2 Creating a library
  1100. ------------------------
  1101.  
  1102. You can also create libraries (a collection of object files, which can be
  1103. linked with other programs) with RHIDE. The way for doing this is very
  1104. simple. Because RHIDE knows about the meaning of file suffixes, you can
  1105. change the name of the main target (See Section 3.8.7) to have a suffix `.a'
  1106. and that's all. Now RHIDE will run `ar' instead of linking.
  1107.  
  1108. 2.7.3 Saving/Loading the options
  1109. --------------------------------
  1110.  
  1111. RHIDE supports two different ways for saving the options which you have
  1112. customized.
  1113.  
  1114. The first one (which I prefer) is the use of the so called default project.
  1115. This is the project `rhide.gpr' and must be located in the same directory
  1116. where `rhide.exe' is. To create or modify this default project change to that
  1117. directory (normally %DJDIR%/bin) and type there
  1118.  
  1119.      rhide rhide
  1120.  
  1121. Now change any options you want and exit RHIDE. From now on these options are
  1122. used for any newly created project or when running RHIDE without a project.
  1123.  
  1124. The second way is to save your options to a project file (See Section 3.2.3
  1125. options) or to load them from any existing project file (See Section 3.9.8).
  1126.  
  1127. 3. Description of the pull-down menus
  1128. *************************************
  1129.  
  1130. This chapter describes the pull-down menus and all their sub-menus.  The main
  1131. menu bar, the topmost line of the screen, is selected with the hotkey <F10>
  1132. or by clicking with the mouse at this line. You can walk through the menu
  1133. with the cursor keys and a menu entry is selected with <ENTER> or by clicking
  1134. with the mouse on it.
  1135.  
  1136. 3.1 System menu
  1137. ===============
  1138.  
  1139. This menu has its name only that one can speak about it. The symbol for this
  1140. menu is the leftmost symbol in the menu bar.  <Alt+SPACE> selects this menu.
  1141.  
  1142. 3.1.1 About
  1143. -----------
  1144.  
  1145. This brings up a window with information about the author and the version of
  1146. RHIDE.
  1147.  
  1148. 3.1.2 Bug report
  1149. ----------------
  1150.  
  1151. This menu entry opens an editor with some important information which should
  1152. be part of a bug report and where you can describe the problem.
  1153.  
  1154. 3.1.3 FSDB
  1155. ----------
  1156.  
  1157. With this menu item you can call the FSDB debugger, which comes with DJGPP.
  1158. But remember, this runs the debugger as an external program and it is not
  1159. integrated in RHIDE.
  1160.  
  1161. 3.1.4 GREP
  1162. ----------
  1163.  
  1164. This is a very useful function. You can type the arguments for grep in the
  1165. input line, which will be shown, and after this the program grep is called.
  1166. The messages from grep are redirected to the message window (See Section 4.8).
  1167.  
  1168. 3.1.5 GDB
  1169. ---------
  1170.  
  1171. This is analog to the call of FSDB (See Section 3.1.3).
  1172.  
  1173. 3.1.6 Refresh Desktop
  1174. ---------------------
  1175.  
  1176. This function is sometimes useful, if you had run your program and it wrote
  1177. some things to the screen (for redirecting `stdout' and `stderr' from your
  1178. program to a window in RHIDE (See Preferences)).
  1179.  
  1180. 3.1.7 Calculator
  1181. ----------------
  1182.  
  1183. This brings up a dialog, where you can do some calculations. This dialog is
  1184. similar to the evaluate dialog (See Section 3.7.2), but it uses not the
  1185. feature of GDB, but it is a separate calculator.  For more information See
  1186. Documentation for the editor in "SET's editor", or point your Web browser to
  1187. http://editor.html
  1188.  
  1189. There can be used also some of the standard functions like `log', `sin' and
  1190. so on and it can convert also integer values between different bases (`hex',
  1191. `oct', `dec').
  1192.  
  1193. 3.1.8 Puzzle
  1194. ------------
  1195.  
  1196. This will open a small window, where you can play a little puzzle game. The
  1197. "stones" are moved with the cursor keys or by clicking with the mouse on it.
  1198.  
  1199. 3.1.9 Calender
  1200. --------------
  1201.  
  1202. This will open a little calender. With the cursor keys <Up> and <Down> you
  1203. can switch to the next/previous month or click with the mouse on the small
  1204. symbols in the upper corners.
  1205.  
  1206. 3.1.10 ASCII table
  1207. ------------------
  1208.  
  1209. This will open a window with all the ASCII characters. Move around with the
  1210. cursor keys or press any key to select any wanted character.  In the bottom
  1211. line you will see the the character and the value of it (decimal and
  1212. hexadecimal). The decimal value can be used to create that character for
  1213. instance in the editor by holding the <Alt> key down and typing the value on
  1214. the numeric key pad.
  1215.  
  1216. 3.2 File
  1217. ========
  1218.  
  1219. In this menu you can find functions, which deal with files, like open, close,
  1220. save and so on.
  1221.  
  1222. 3.2.1 Open
  1223. ----------
  1224.  
  1225. Brings up the file-open dialog, where you can select a file to open (hotkey
  1226. <F3> ). This dialog contains an input line for the filename, a list of
  1227. filenames, an information window and the buttons for opening and canceling.
  1228.  
  1229. In the filename input line you can type directly the file, which you want to
  1230. open or you can type any mask to list only some files. The default mask is
  1231. `*.cc', but you can change this to anything and your last typed mask is
  1232. stored as the default mask for the next use. There is also a history of your
  1233. previous typed inputs available. This is selected when you hit the down key
  1234. or click at the small symbol at the end of the input line with your mouse.
  1235.  
  1236. The list of filenames shows all the files that correspond to the mask.  If
  1237. this list is selected you can choose a file with the cursor keys, or you can
  1238. type the first letters of the filename you want, and the bar is located at
  1239. the first file, which has these letters as the first characters. To open the
  1240. file simply press <ENTER> or double click with the mouse on it.
  1241.  
  1242. Below the list of filenames there is a small window with information about
  1243. the selected file (complete path, size, modification time).
  1244.  
  1245. To leave the dialog without opening a file press <ESC> .
  1246.  
  1247. 3.2.2 New
  1248. ---------
  1249.  
  1250. This is the menu entry for creating a new file to edit. This file gets the
  1251. title 'Untitled'. If you save or close it, you will be prompted for a new
  1252. name of this file by opening the file-open dialog.
  1253.  
  1254. 3.2.3 Save
  1255. ----------
  1256.  
  1257. Save the file in the current editor-window to disk. If the name of the
  1258. current file is 'Untitled' you will be prompted for a new name. <F2> is the
  1259. hotkey for this function.  The modification of the file on disk is set to the
  1260. time of the last modification of this file and not to the time when saving to
  1261. disk.
  1262.  
  1263. If the file was not modified, it is not saved!!
  1264.  
  1265. 3.2.4 Save as
  1266. -------------
  1267.  
  1268. Save the file in the current editor-window to disk under a different name,
  1269. for which you will be prompted. For choosing the new name the file-open
  1270. dialog will be opened.
  1271.  
  1272. 3.2.5 Save all
  1273. --------------
  1274.  
  1275. Save all the editor files to disk. If they are not modified, they will not be
  1276. saved.
  1277.  
  1278. 3.2.6 DOS Shell
  1279. ---------------
  1280.  
  1281. This executes a DOS-Shell. This is done by calling the program, which is set
  1282. in the environment variable COMSPEC. If this variable does not exist, the
  1283. program `c:/command.com' is executed.  To return to the IDE type `exit' at
  1284. the DOS-prompt. Before calling DOS, the program does a *Save all* (See
  1285. Section 3.2.3 all) automatically.
  1286.  
  1287. 3.2.7 Exit
  1288. ----------
  1289.  
  1290. Here you can quit the IDE. If there are any unsaved editor-files, you will be
  1291. prompted for saving them. (<Alt+X> is the hotkey.)
  1292.  
  1293. 3.3 Edit
  1294. ========
  1295.  
  1296. In this menu you can activate functions, which are related to the integrated
  1297. editor. Most of them have a hotkey.
  1298.  
  1299. 3.3.1 Undo
  1300. ----------
  1301.  
  1302. This undoes your last change in the current editor-window.  <Alt+Backspace>
  1303. is the hotkey for this function.
  1304.  
  1305. 3.3.2 Redo
  1306. ----------
  1307.  
  1308. This does the reverse to undo (See Section 3.3.1). That means, it is the undo
  1309. of the undo.
  1310.  
  1311. 3.3.3 Cut
  1312. ---------
  1313.  
  1314. This *moves* the selected text in the current editor-window to the clipboard.
  1315. (<Shift+Del> is the hotkey.)
  1316.  
  1317. 3.3.4 Copy
  1318. ----------
  1319.  
  1320. This *copys* the selected text in the current editor-window to the clipboard.
  1321. (<Ctrl+Ins> is the hotkey.)
  1322.  
  1323. 3.3.5 Paste
  1324. -----------
  1325.  
  1326. This inserts the selected text in the clipboard in the current editor-window
  1327. at the current cursor-position. (<Shift+Ins> is the hotkey.)
  1328.  
  1329. 3.3.6 Show Clipboard
  1330. --------------------
  1331.  
  1332. This brings up an editor-window with the contents of the clipboard. The
  1333. contents of the clipboard will be lost, if you exit the IDE.
  1334.  
  1335. 3.3.7 Clear
  1336. -----------
  1337.  
  1338. This erases the selected text in the current editor-window.
  1339.  
  1340. 3.3.8 Copy to Windows clipboard
  1341. -------------------------------
  1342.  
  1343. This is the same function as See Section 3.3.4 but it uses the Windows
  1344. clipboard and works only, when running under Windows.
  1345.  
  1346. 3.3.9 Paste from Windows clipboard
  1347. ----------------------------------
  1348.  
  1349. This is the same function as See Section 3.3.5 but it uses the Windows
  1350. clipboard and works only, when running under Windows.
  1351.  
  1352. 3.3.10 Expand all tabs
  1353. ----------------------
  1354.  
  1355. When selecting this menu entry, all real tabs (all characters with the code
  1356. `0x9') are expanded to as many spaces as defined as the tabsize (See
  1357. Preferences).
  1358.  
  1359. 3.3.11 Compact text
  1360. -------------------
  1361.  
  1362. This function is the reverse to (See Section 3.3.10). That means, RHIDE tries
  1363. to make as many as possible spaces (count is taken from the defined tabsize)
  1364. to real tabs.
  1365.  
  1366. 3.3.12 Macro
  1367. ------------
  1368.  
  1369. Here is a submenu for handling macros. Currently there is only one recordable
  1370. macro available and it is NOT stored anywhere. That means it is lost when you
  1371. leave RHIDE and restart it. There is another way of using macros (See Section
  1372. 4.13).
  1373.  
  1374. 3.3.12.1 Record
  1375. ...............
  1376.  
  1377. After selecting this function, all your keystrokes are recorded to reproduce
  1378. them later.
  1379.  
  1380. (<Shift+F10> is the hotkey.)
  1381.  
  1382. 3.3.12.2 Stop
  1383. .............
  1384.  
  1385. This stops the recording of a macro.
  1386.  
  1387. (<Alt+F10> is the hotkey.)
  1388.  
  1389. 3.3.12.3 Play
  1390. .............
  1391.  
  1392. This executes the recorded macro.
  1393.  
  1394. (<Ctrl+F10> is the hotkey.)
  1395.  
  1396. 3.4 Search
  1397. ==========
  1398.  
  1399. Menu for searching and replacing strings in the editor-window. These functions
  1400. have also hotkeys.
  1401.  
  1402. 3.4.1 Find
  1403. ----------
  1404.  
  1405. Find a string in the current editor-window. You can type the string for
  1406. searching in an input line and you can also select, if the search is case
  1407. sensitive or not and to search for whole words only or not.
  1408.  
  1409. (<Ctrl+Q+F> is the hotkey.)
  1410.  
  1411. 3.4.2 Replace
  1412. -------------
  1413.  
  1414. Find and replace a string in the current editor-window. This works in the
  1415. same way like searching text, but additionally you can give a string, with
  1416. which the found text will be replaced.
  1417.  
  1418. (<Ctrl+Q+A> is the hotkey.)
  1419.  
  1420. 3.4.3 Search again
  1421. ------------------
  1422.  
  1423. This function repeats the last search or replace operation.
  1424.  
  1425. (<Ctrl+L> is the hotkey,)
  1426.  
  1427. 3.4.4 Goto line
  1428. ---------------
  1429.  
  1430. After prompting for a line number (with range checking), the cursor will be
  1431. located at this line.
  1432.  
  1433. (<Ctrl+J> is the hotkey.)
  1434.  
  1435. 3.4.5 Jump to function
  1436. ----------------------
  1437.  
  1438. With this feature you can easily jump to the source line of a function to
  1439. edit or see it. This is only a heuristic by parsing your source file and does
  1440. not take the information from the debugging symbols.
  1441.  
  1442. After selecting it you will get a dialog, from where you can select the
  1443. function to which you want to jump.
  1444.  
  1445. (<Alt+F2> is the hotkey.)
  1446.  
  1447. 3.4.6 Next message
  1448. ------------------
  1449.  
  1450. This selects the next message in the message window (See Section 4.8), but
  1451. only, if there is a next message available.
  1452.  
  1453. (<Alt+F8> is the hotkey.)
  1454.  
  1455. 3.4.7 Previous message
  1456. ----------------------
  1457.  
  1458. This selects the previous message in the message window (See Section 4.8),
  1459. but only, if there is a previous message available.
  1460.  
  1461. (<Alt+F7> is the hotkey.)
  1462.  
  1463. 3.5 Run
  1464. =======
  1465.  
  1466. In this menu you find the functions for running your program.
  1467.  
  1468. 3.5.1 Run
  1469. ---------
  1470.  
  1471. If your project-target is an executable, this will be run after doing a Make
  1472. (See Section 3.6.2). <Ctrl+F9> is the hotkey. If the build was not
  1473. successful, the program will not be started. The debugging functions are only
  1474. available if `-g' was used for compiling.  (See Section 2.2)
  1475.  
  1476. 3.5.2 Step over
  1477. ---------------
  1478.  
  1479. This executes the code for exactly one source line. If there is a function
  1480. call at the current line this function is executed at once without stepping
  1481. through this function.
  1482.  
  1483. When using the <Shift>-key, RHIDE will NOT switch to the user screen when
  1484. executing the debuggee.
  1485.  
  1486. (hotkey <F8> or hotkey <Shift+F8> may be used.)
  1487.  
  1488. 3.5.3 Trace into
  1489. ----------------
  1490.  
  1491. This is the same as Step over (See Section 3.5.2), except when there is a
  1492. function call at the current line and for this function debugging information
  1493. is available, RHIDE steps into this function.
  1494.  
  1495. When using the <Shift>-key, RHIDE will NOT switch to the user screen when
  1496. executing the debuggee.
  1497.  
  1498. (hotkey <F7> or hotkey <Shift+F7> may be used.)
  1499.  
  1500. 3.5.4 Go to cursor
  1501. ------------------
  1502.  
  1503. This will execute your program until the execution comes to the line, where
  1504. the cursor is. If the program is stopped at any other place by a breakpoint
  1505. the program will stop there and not at the cursor position.
  1506.  
  1507. When using the <Shift>-key, RHIDE will NOT switch to the user screen when
  1508. executing the debuggee.
  1509.  
  1510. (hotkey <F4> or hotkey <Shift+F4> may be used.)
  1511.  
  1512. 3.5.5 Program reset
  1513. -------------------
  1514.  
  1515. This 'kills' your debuggee at the current execution point without executing
  1516. any other code of your program
  1517.  
  1518. (<Ctrl+F2> is the hotkey.)
  1519.  
  1520. 3.5.5.1 Main function
  1521. .....................
  1522.  
  1523. Here you can define the name of the `main' function of your program. This is
  1524. needed at least when debugging programs, (like written with GNU Pascal or GNU
  1525. Fortran), where the function of your main program is not `main'.
  1526.  
  1527. But you can use this also to debug your program at locations, which are
  1528. executed normally before `main' is called (for instance the global
  1529. constructors).
  1530.  
  1531. 3.5.6 Arguments
  1532. ---------------
  1533.  
  1534. Here you can type the arguments, which will be passed to your program when
  1535. you do a *run*. (See Section 3.5.1) and (See Section 2.2).
  1536.  
  1537. 3.6 Compile menu
  1538. ================
  1539.  
  1540. Here are the functions to translate your source files and for updating your
  1541. project.
  1542.  
  1543. 3.6.1 Compile
  1544. -------------
  1545.  
  1546. Compile the file in the current editor-window or the selected entry in the
  1547. project-window if you are there. The IDE chooses automatically the correct
  1548. compiler, depending on the suffix of the file.  (See Section 2.1)
  1549.  
  1550. (<Alt+F9> is the hotkey.)
  1551.  
  1552. 3.6.2 Make
  1553. ----------
  1554.  
  1555. This makes your project up to date. It works like MAKE on commandline with a
  1556. makefile. <F9> is the hotkey. The dependencies are checked for each item of
  1557. the project. These dependencies are automatically generated, if you compile a
  1558. file within the IDE.
  1559.  
  1560. 3.6.3 Link
  1561. ----------
  1562.  
  1563. This function has two different results depending on the type of your
  1564. project. If your project is an executable (See Section 2.1), the linker is
  1565. started. But if it is a library, all the object files are taken to build a
  1566. library.
  1567.  
  1568. 3.6.4 Build all
  1569. ---------------
  1570.  
  1571. This builds the project completely new with compiling and linking all of the
  1572. project-items.
  1573.  
  1574. 3.7 Debug
  1575. =========
  1576.  
  1577. This menu contains the functions for debugging your program. Most of them
  1578. have hotkeys and they are described in more detail later (See Section 3.7ging
  1579. with RHIDE).
  1580.  
  1581. 3.7.1 Set/Reset Breakpoint
  1582. --------------------------
  1583.  
  1584. See Section 5.5.1
  1585.  
  1586. (<Ctrl+F8> is the hotkey.)
  1587.  
  1588. 3.7.2 Evaluate/Modify
  1589. ---------------------
  1590.  
  1591. See Section 5.3.2
  1592.  
  1593. (<Ctrl+F4> is the hotkey.)
  1594.  
  1595. 3.7.3 Watch an expression
  1596. -------------------------
  1597.  
  1598. See Section 5.3.3
  1599.  
  1600. (<Ctrl+F7> is the hotkey.)
  1601.  
  1602. 3.7.4 Breakpoints
  1603. -----------------
  1604.  
  1605. See Section 5.5.2
  1606.  
  1607. 3.7.5 Disassembler window
  1608. -------------------------
  1609.  
  1610. This opens a window, where you can see assembler instructions.  When you are
  1611. running the debugger, you will see the instructions at the current execution
  1612. point of your program.
  1613.  
  1614. You can step See Section 3.5.2 or trace See Section 3.5.3 here in the same way
  1615. like in an editor window and you can also debug code, which has no debugging
  1616. information.
  1617.  
  1618. Additionally you can scroll here also forwards or backwards but scrolling
  1619. backwards is very hard to implememnt and so you will get when scrolling
  1620. backwards most of the time wrong output. Sorry for this, but until I find
  1621. more time to implement this better you have to live with it.
  1622.  
  1623. 3.7.6 Call stack
  1624. ----------------
  1625.  
  1626. This shows a window with a list of functions, from which the current
  1627. execution point in the debugged program is called. If you hit <Enter> on a
  1628. function which has line number debugging information, you will go to the
  1629. source line which is shown in the window.
  1630.  
  1631. (<Ctrl+F3> is the hotkey.)
  1632.  
  1633. 3.7.7 List of Functions
  1634. -----------------------
  1635.  
  1636. This asks first for a regular expression to list only those functions of your
  1637. program, which match that expression. The syntax for such a regular
  1638. expression is a little bit different from the wildcards you are probably
  1639. knowing from MS-DOS.
  1640.  
  1641. If you want to get a list of all functions you should enter either nothing
  1642. (the default), or ".*", or "?*" (both without the double quotes).  The
  1643. expression "*" does NOT mean all function. In fact, your entry will be
  1644. interpreted as a regular expression.
  1645.  
  1646. After you have typed the expression and pressed <Enter>, you will get a list
  1647. of functions that match the regular expression and for which debugging
  1648. information is available.
  1649.  
  1650. This list is sorted by the name of the function and has three parts:
  1651.  
  1652. NAME | RETURN VALUE | FILE
  1653.  
  1654. You can walk through the list with the cursor keys or the mouse. If you hit
  1655. <Enter> or double click a function, you will go the the source code of that
  1656. function.
  1657.  
  1658. 3.8 Project
  1659. ===========
  1660.  
  1661. Here you can add or remove items to or from your project
  1662.  
  1663. 3.8.1 Open project
  1664. ------------------
  1665.  
  1666. Here is the point to open a project. After selecting this menu item, the file
  1667. open dialog is opened to select a project. You can type the name of the
  1668. project or select one from the list.
  1669.  
  1670. If you open a project in another directory than the current, RHIDE will
  1671. change the current directory to this directory and then the project will be
  1672. opened.
  1673.  
  1674. If you type here a name of a project which does not exist, a new one is
  1675. created.
  1676.  
  1677. If no project was opened and you create a new project, all open desktop files
  1678. remain open, but they are not added to the project.  If a project was opened,
  1679. it will be automatically closed before the new project is opened.
  1680.  
  1681. 3.8.2 Close project
  1682. -------------------
  1683.  
  1684. This closes the currently opened project and closes all files, which are on
  1685. the desktop.
  1686.  
  1687. 3.8.3 Add item
  1688. --------------
  1689.  
  1690. A dialog will be opened, from where you can choose your file to add to your
  1691. project. If you are in the project window (See Section 3.10.9 window) you can
  1692. use the <Ins> key to activate this function within the project window.
  1693.  
  1694. Currently it is impossible to use relative or absolute paths as part of a
  1695. project item. If you have your files in several directories, you have to
  1696. setup either the search path for source files or you have to create for each
  1697. directory a library that can be included in your project.
  1698.  
  1699. 3.8.4 Delete item
  1700. -----------------
  1701.  
  1702. This will remove the selected item in the project-window from your project.
  1703. If you are in the project window (See Section 3.10.9 window) you can use the
  1704. <Del> key to activate this function.
  1705.  
  1706. 3.8.5 Local options
  1707. -------------------
  1708.  
  1709. Here you can give the selected project-item options for compiling, which will
  1710. be in effect only for this item. If you are in the project window (See
  1711. Section 3.10.9 window) you can use <Ctrl+O> to activate this function.  The
  1712. options you give here are passed to GCC only, when compiling this file.  For
  1713. more details see (See Section 3.8.5 for a project item).
  1714.  
  1715. 3.8.6 Includes
  1716. --------------
  1717.  
  1718. This shows the dependencies for the selected item in the project window. You
  1719. can use the hotkey <Ctrl+I> in the project window.  (See Section 3.10.9
  1720. window)
  1721.  
  1722. 3.8.7 Main targetname
  1723. ---------------------
  1724.  
  1725. Here you can change the name of your main target. The main target is either
  1726. an executable file or a library. RHIDE selects the type of the main target
  1727. from the suffix of this name. If it has no suffix or the suffix `.exe', an
  1728. executable will be built. If it has the suffix `.a', a library will be
  1729. created.
  1730.  
  1731. Remember when you give it no suffix, both, the COFF image and the `.exe' file
  1732. will created. If it has the `.exe' suffix, only the `.exe' file is created.
  1733.  
  1734. 3.8.8 Primary file
  1735. ------------------
  1736.  
  1737. Here you can give the primary source file, when you want to use the
  1738. 'automake' feature of GPC. If you type a source name here, RHIDE assumes that
  1739. your program is written in Pascal and does NOT check any dependencies of the
  1740. project, because this is done automatically by GPC with the `--automake'
  1741. option.
  1742.  
  1743. If you don't want to use the 'automake' feature of GPC, even when building a
  1744. Pascal program, give here an empty name, which is the default.
  1745.  
  1746. 3.8.9 Clear dependencies
  1747. ------------------------
  1748.  
  1749. This function removes all internal stored dependencies. The files are not
  1750. removed. This is useful when you want to create a makefile (See Section
  1751. 3.8.11) and you do not want to include all the absolute filenames for the
  1752. dependencies (mostly the include files).
  1753.  
  1754. This function is a relict from earlier versions of RHIDE, but I have not
  1755. disabled it.
  1756.  
  1757. 3.8.10 Delete rebuildable files
  1758. -------------------------------
  1759.  
  1760. This function includes the function of clearing the dependencies (See Section
  1761. 3.3.7 dependencies) and removes in addition to it all the files, which can be
  1762. rebuild within RHIDE.
  1763.  
  1764. 3.8.11 Write Makefile
  1765. ---------------------
  1766.  
  1767. Here you can create a makefile that contains all the rules to build the
  1768. project from the command line without starting RHIDE. For this you need the
  1769. GNU make, because the generated makefile uses the features of GNU make very
  1770. extensively.
  1771.  
  1772. If you have used environment variables in your search paths (See Section
  1773. 3.9.1), these are not expanded in the generated makefile.  But all variables
  1774. you used will be defined at the beginning of the makefile with their current
  1775. value.
  1776.  
  1777. 3.9 Options
  1778. ===========
  1779.  
  1780. This menu contains many submenus for anything you can customize.
  1781.  
  1782. 3.9.1 Directories
  1783. -----------------
  1784.  
  1785. Here you can define all of the paths, where RHIDE and the compilers finds the
  1786. needed files and where to store some files.
  1787.  
  1788. All the paths you can define in the several entries have the form of a
  1789. semicolon separated list of directories, just like your environment variable
  1790. %PATH%. You can use forward slashes and back slashes, but they are all
  1791. converted to forward slashes by RHIDE. You can also use environment variables
  1792. as part of your paths. The syntax of such a variable is that of a GNU
  1793. makefile. If you want to use the variable %DJDIR%, you must type $(DJDIR).
  1794.  
  1795. 3.9.1.1 Include directories
  1796. ...........................
  1797.  
  1798. This is the list of directories, where GCC looks for include files and RHIDE
  1799. searches in this directory (after looking in the current directory) for
  1800. header files.
  1801.  
  1802. 3.9.1.2 Library directories
  1803. ...........................
  1804.  
  1805. This is the list of directories, where GCC looks for libraries when linking.
  1806. RHIDE searches in this directories (after looking in the current directory)
  1807. for libraries, if you have included them directly as a project item.
  1808.  
  1809. 3.9.1.3 Object directories
  1810. ..........................
  1811.  
  1812. This is the list of directories where RHIDE looks for object files.  If you
  1813. type here only one directory this has also the effect that the object files,
  1814. which are compiled, are stored in this directory.
  1815.  
  1816. 3.9.1.4 Sources directories
  1817. ...........................
  1818.  
  1819. This is the list of directories, where RHIDE looks for the source files
  1820. (after looking in the current directory).
  1821.  
  1822. 3.9.1.5 Standard headers
  1823. ........................
  1824.  
  1825. Define here a space separated list of directories where your standard headers
  1826. are. Header files found in these directories are not added to the list of
  1827. dependencies which is automatically generated when compiling a C/C++ source
  1828. file.
  1829.  
  1830. 3.9.2 C/C++-Compiler
  1831. --------------------
  1832.  
  1833. In this submenu you can change most flags, which have to do when compiling C
  1834. or C++ files or better for the options of all the currently supported
  1835. compilers.
  1836.  
  1837. 3.9.2.1 Warnings
  1838. ................
  1839.  
  1840. This opens a dialog where you can enable or disable most of the flags for
  1841. generating or suppressing warnings when you compile a C or C++ file.  (See
  1842. Section 3.9.2.8).
  1843.  
  1844. For a detailed description of the available flags See Section 'Warning
  1845. Options' in documentation for 'gcc'.
  1846.  
  1847. 3.9.2.2 Optimizations
  1848. .....................
  1849.  
  1850. This opens a dialog where you can customize how the compiler optimizes your
  1851. code.  (See Section 3.9.2.8).
  1852.  
  1853. For a detailed description of the available flags See Section 'Optimize
  1854. Options' in documentation for 'gcc'.
  1855.  
  1856. 3.9.2.3 Debugging
  1857. .................
  1858.  
  1859. This opens a dialog where you can customize the amount of debugging
  1860. information the compiler should include in object files.  (See Section
  1861. 3.9.2.8).
  1862.  
  1863. For a detailed description of the available flags See Section 'Section
  1864. 3.7ging Options' in documentation for 'gcc'.
  1865.  
  1866. 3.9.2.4 C options
  1867. .................
  1868.  
  1869. This opens a dialog where you can select flags that are only passed to GCC
  1870. when compiling C files.  (See Section 3.9.2.8).
  1871.  
  1872. For a detailed description of the available flags See Section 'C Dialect
  1873. Options' in documentation for 'gcc'.
  1874.  
  1875. 3.9.2.5 CXX options
  1876. ...................
  1877.  
  1878. This opens a dialog where you can select flags which are only passed to GCC
  1879. when compiling C++ files.  (See Section 3.9.2.8).
  1880.  
  1881. For a detailed description of the available flags See Section 'C++ Dialect
  1882. Options' in documentation for 'gcc'.
  1883.  
  1884. 3.9.2.6 Pascal options
  1885. ......................
  1886.  
  1887. This opens a dialog where you can select flags which are only passed to GPC
  1888. when compiling Pascal files.  (See Section 3.9.2.8).
  1889.  
  1890. For a detailed description of the available flags See Section 'Pascal Dialect
  1891. Options' in documentation for 'gpc'.
  1892.  
  1893. 3.9.2.7 Fortran options
  1894. .......................
  1895.  
  1896. This opens a dialog where you can select flags which are only passed to g77
  1897. when compiling Fortran files.  (See Section 3.9.2.8),
  1898.  
  1899. For a detailed description of the available flags See Section 'Fortran
  1900. Dialect Options' in documentation for 'g77'.
  1901.  
  1902. 3.9.2.8 How to toggle these flags
  1903. .................................
  1904.  
  1905. The options in the dialogs for Warnings, Debugging, C-flags and CXX-Flags are
  1906. selected with the cursor-keys or the mouse and are activated or deactivated
  1907. by pressing <SPACE> or by double-clicking with the mouse at the first field
  1908. of the option. If an option can take an additional value or string, an
  1909. inputbox will be opened, and you can type them there. If the additional value
  1910. is optional, you can leave this input-box by pressing <ESC> or activating the
  1911. *Cancel* button and no value, or the previous one will be appended to this
  1912. option.
  1913.  
  1914. 3.9.3 Libraries
  1915. ---------------
  1916.  
  1917. Here you can tell the linker which libraries will be linked in your program.
  1918. At this time the number of additional libraries is limited to 16. If you need
  1919. more, you have to type them manually (See Section 3.6.3er options).
  1920.  
  1921. In the input-fields of the dialog you only have to type the part of your
  1922. library name after `lib' and before `.a'. Example: If your library is
  1923. `libtv.a' put only `tv' there. You can switch between the input lines for the
  1924. libraries using <Tab> or <Down Arrow> (next field) or <Shift+Tab> or <Up
  1925. Arrow> (previous field). If you have typed your libraries you can activate or
  1926. disable them by switching the checkbox before the name on or off. This is
  1927. done by pressing <Alt> and the corresponding digit or letter of the checkbox
  1928. at the same time or by clicking with the mouse.
  1929.  
  1930. Normally RHIDE checks the types of your source-files and automatically adds
  1931. some standard libraries, corresponding to these source-files.  These are for
  1932. C++ files the library `libiostream.a' and for Objective C files the
  1933. `libobjc.a' library.  If you want to disable this, deactivate the *Use
  1934. standard libraries* checkbox. This adds also the commandline option -NOSTDLIB
  1935. to GCC, that means, you must give the linker explicitly all of the standard
  1936. libraries, which you need. This includes the `libgcc.a' and `libc.a'
  1937. libraries.
  1938.  
  1939. 3.9.4 Linker options
  1940. --------------------
  1941.  
  1942. Here you can enter a space separated list of options that will be passed to
  1943. GCC when linking your program.  (See Section 2.2)
  1944.  
  1945. (See Section 2.2).
  1946.  
  1947. 3.9.5 Compiler options
  1948. ----------------------
  1949.  
  1950. Here you can enter a space separated list of additional options that will be
  1951. passed to GCC every time it is called.  (See Section 2.2)
  1952.  
  1953. (See Section 2.2).
  1954.  
  1955. 3.9.6 Environment
  1956. -----------------
  1957.  
  1958. 3.9.6.1 Colors
  1959. ..............
  1960.  
  1961. Here you can customize all of the colors of the IDE.
  1962.  
  1963. 3.9.6.2 Editor options
  1964. ......................
  1965.  
  1966. autoindent
  1967. ..........
  1968.  
  1969. When this is enabled, the editor automatically indents the next line by
  1970. referring to the previous line if you press enter.
  1971.  
  1972. For more information See Documentation for the editor in "SET's editor", or
  1973. point your Web browser to http://editor.html
  1974.  
  1975. (See Section 3.3or options)
  1976.  
  1977. Use tabs
  1978. ........
  1979.  
  1980. When this is enabled, the character `\t' is inserted into the text if you
  1981. press the <Tab>-key. Otherwise the number of spaces (defined by tabsize) is
  1982. inserted.
  1983.  
  1984. For more information see See Documentation for the editor in "SET's editor",
  1985. or point your Web browser to http://editor.html
  1986.  
  1987. (See Section 3.3or options)
  1988.  
  1989. Persistent blocks
  1990. .................
  1991.  
  1992. Normally, RHIDE uses persistent blocks. This means the selected area will not
  1993. get unselected if you press a key. If you like the behavior of earlier
  1994. versions of RHIDE, disable this option.
  1995.  
  1996. For more information see See Documentation for the editor in "SET's editor",
  1997. or point your Web browser to http://editor.html
  1998.  
  1999. (See Section 3.3or options)
  2000.  
  2001. Intelligent C indenting
  2002. .......................
  2003.  
  2004. This option enables the so called 'C intelligent indenting', which is an
  2005. heuristic for indenting after special key words like `if' or `while' more
  2006. than the normal autoindenting. This works only if AUTOINDENT is enabled.
  2007.  
  2008. For more information see See Documentation for the editor in "SET's editor",
  2009. or point your Web browser to http://editor.html
  2010.  
  2011. (See Section 3.3or options)
  2012.  
  2013. Column cursor
  2014. .............
  2015.  
  2016. This is a special feature of the builtin editor. If you enable this option
  2017. you will see a vertical special color highlighted column across the whole
  2018. editor window at the cursor column.
  2019.  
  2020. For more information see See Documentation for the editor in "SET's editor",
  2021. or point your Web browser to http://editor.html
  2022.  
  2023. (See Section 3.3or options)
  2024.  
  2025. Row cursor
  2026. ..........
  2027.  
  2028. This is a special feature of the builtin editor. If you enable this option
  2029. you will see a horizontal special color highlighted row across the whole
  2030. editor window at the cursor row.
  2031.  
  2032. For more information see See Documentation for the editor in "SET's editor",
  2033. or point your Web browser to http://editor.html
  2034.  
  2035. (See Section 3.3or options)
  2036.  
  2037. Match pair highlight
  2038. ....................
  2039.  
  2040. If this option is enabled, you will see at any time you type a bracket, brace
  2041. or parenthesis the matching highlighted or a message, that there was no
  2042. matching found.
  2043.  
  2044. For more information see See Documentation for the editor in "SET's editor",
  2045. or point your Web browser to http://editor.html
  2046.  
  2047. (See Section 3.3or options)
  2048.  
  2049. Do not move the cursor on paste
  2050. ...............................
  2051.  
  2052. Enable this option, when you want to leave the cursor at it's current
  2053. position when you paste some text.
  2054.  
  2055. (See Section 3.3or options)
  2056.  
  2057. Transparent Blocks
  2058. ..................
  2059.  
  2060. When this option is enabled, the syntax highlight is still shown in selected
  2061. blocks.
  2062.  
  2063. (See Section 3.3or options)
  2064.  
  2065. Optimal fill
  2066. ............
  2067.  
  2068. When enabling this option the editor fills the gaps in your text with an
  2069. optimal value of spaces and tabs.
  2070.  
  2071. (See Section 3.3or options)
  2072.  
  2073. Tabsize
  2074. .......
  2075.  
  2076. Additionally you can select here the tabbing size for the editor. This value
  2077. is used as the global setting for all editor windows which will be opened
  2078. after setting this value. The currently opened windows will use also this
  2079. setting.
  2080.  
  2081. (See Section 3.3or options)
  2082.  
  2083. 3.9.6.3 Preferences
  2084. ...................
  2085.  
  2086. Here you can customize some basic options for the work of the IDE. A dialog
  2087. will be opened where you can turn on or off the following options:
  2088.  
  2089. all dependencies in makefile
  2090. ............................
  2091.  
  2092. When this is enabled, all internally stored dependencies for a project item
  2093. are written to the makefile.  (See Section 3.8.11). You should disable this
  2094. option, if you want to give another user the makefile of your project, and
  2095. (s)he has a different directory structure.
  2096.  
  2097. (See Preferences)
  2098.  
  2099. create backup files
  2100. ...................
  2101.  
  2102. Create backup files when saving. When it is enabled, RHIDE creates a backup
  2103. of the file to save under the same name as the editing file, but the suffix
  2104. is replaced with `.bak'
  2105.  
  2106. (See Preferences)
  2107.  
  2108. syntax highlighting
  2109. ...................
  2110.  
  2111. Turn the Syntax highlight on or off. RHIDE automatically checks the suffix of
  2112. the editing file to determine the correct syntax highlighting.  Currently
  2113. this is supported only for C, C++, and Pascal source files.  All other files
  2114. are not specially highlighted.
  2115.  
  2116. (See Preferences)
  2117.  
  2118. Use dual display
  2119. ................
  2120.  
  2121. Here is an very powerful option. If you have installed on your computer a
  2122. secondary display (monochrome monitor) in addition to your VGA monitor, RHIDE
  2123. can (when this option is enabled) switch to the second monitor for it's
  2124. output and you can see your program on the normal monitor.
  2125.  
  2126. If this option is enabled and you have not a secondary monitor installed,
  2127. RHIDE will detect this and does not switch to it.
  2128.  
  2129. (See Preferences)
  2130.  
  2131. redirect stderr
  2132. ...............
  2133.  
  2134. Turn this on, if you want to redirect the output to stderr of your program to
  2135. a window in the IDE. This is also needed, if you want to use the builtin
  2136. analyzing of a call frame traceback, when your program crashes.
  2137.  
  2138. (See Preferences)
  2139.  
  2140. redirect stdout
  2141. ...............
  2142.  
  2143. Turn this option on, if you want to redirect the output to stdout from your
  2144. program to a window in the IDE.
  2145.  
  2146. (See Preferences)
  2147.  
  2148. show process information
  2149. ........................
  2150.  
  2151. Turn this option on if you want to see which files are checked, when you do a
  2152. make (See Section 3.6.2), and to see the commandlines how the compilers are
  2153. started by RHIDE.
  2154.  
  2155. (See Preferences)
  2156.  
  2157. show free memory
  2158. ................
  2159.  
  2160. Turn this option on to show in the upper right corner of the screen a readout
  2161. of the free memory of your system.  This shows both, the virtual and the
  2162. physical free memory.
  2163.  
  2164. (See Preferences)
  2165.  
  2166. No file caching
  2167. ...............
  2168.  
  2169. If this option is enabled, RHIDE does not use the internal caching of
  2170. information about searching files and modification times. Use this only if
  2171. you have problems with the automatic checking of dependencies, because this
  2172. slows down RHIDE.
  2173.  
  2174. (See Preferences)
  2175.  
  2176. 16 background colors
  2177. ....................
  2178.  
  2179. On EGA/VGA video cards it is possible to use 16 background colors instead of
  2180. normal 8. This is done by telling the video card how to interpret the highest
  2181. bit of the color attribute. If you enable this, you can use up to 16
  2182. background colors, otherwise there are only 8 colors for the background
  2183. available. To get blinking foreground colors, you must use a little trick.
  2184. Enable at first this option here. Then change the color attribute to
  2185. highlight background color you want and then reset the '16 background colors'
  2186. option.
  2187.  
  2188. (See Preferences)
  2189.  
  2190. Show GDB commands
  2191. .................
  2192.  
  2193. When this option is enabled you can see in the GDB output window which
  2194. commands are sent to the builtin GDB from RHIDE.
  2195.  
  2196. (See Preferences)
  2197.  
  2198. Use no shadows
  2199. ..............
  2200.  
  2201. When this option is enabled RHIDE uses no shadows at all for the windows and
  2202. dialogs and so on.
  2203.  
  2204. (See Preferences)
  2205.  
  2206. Save text palette
  2207. .................
  2208.  
  2209. When you debug a program, which modifies the palette when in text mode, you
  2210. should enable this option.
  2211.  
  2212. Save project only when closing
  2213. ..............................
  2214.  
  2215. Enable this option only, when you get a system crash after starting your
  2216. program and because of the use of disk cache the project, which RHIDE
  2217. automatically saves before your program is run, is corrupted.
  2218.  
  2219. Screen mode
  2220. ...........
  2221.  
  2222. Here you can select the video mode. If you want to use a video mode other
  2223. than the ones shown, you have to select the USER MODE mode and type the value
  2224. of this mode (see in the reference of your video card) as a decimal or
  2225. hexadecimal (preceeded by `0x') number. But you can use only textmodes (modes
  2226. with starting video ram address at `0xB800:0000'. For the numbers of the
  2227. videomodes refer to the documentation of your video card.  If you type an
  2228. invalid videomode (RHIDE checks it), the 80x25-Mode will automatically
  2229. selected.
  2230.  
  2231. I have tested all available text modes with my et4000-card, and they work.
  2232. For some modes, (mostly every high resolution text mode) the mouse cursor is
  2233. shown by my own routine.  That means that you can use the mouse also in the
  2234. high resolution text modes.
  2235.  
  2236. (See Preferences)
  2237.  
  2238. 3.9.6.4 Mouse options
  2239. .....................
  2240.  
  2241. Here you can customize a little bit the speed of the double click interval
  2242. and you can also tell RHIDE to reverse the mouse buttons.
  2243.  
  2244. 3.9.6.5 Reserved words
  2245. ......................
  2246.  
  2247. This opens a dialog, where you can modify the list of reserved words the
  2248. editor knows. If you choose the *Default* button in this dialog, the default
  2249. reserved words are generated and any previous words are lost.
  2250.  
  2251. 3.9.6.6 Pascal reserved words
  2252. .............................
  2253.  
  2254. This opens a dialog, where you can modify the list of reserved words for
  2255. Pascal the editor knows. If you choose the *Default* button in this dialog,
  2256. the default reserved words are generated and any previous words are lost.
  2257.  
  2258. 3.9.6.7 C-Flags
  2259. ...............
  2260.  
  2261. Here you can modify the list of C options, which you can turn on or off. (See
  2262. Section 3.9.2.4)
  2263.  
  2264. (See How to change the list of flags)
  2265.  
  2266. 3.9.6.8 CXX-Flags
  2267. .................
  2268.  
  2269. Here you can modify the list of CXX options, which you can turn on or off.
  2270. (See Section 3.9.2.5)
  2271.  
  2272. (See How to change the list of flags)
  2273.  
  2274. 3.9.6.9 Pascal-Flags
  2275. ....................
  2276.  
  2277. Here you can modify the list of Pascal options, which you can turn on or off.
  2278. (See Section 3.9.2.6)
  2279.  
  2280. (See How to change the list of flags)
  2281.  
  2282. 3.9.6.10 Fortran-Flags
  2283. ......................
  2284.  
  2285. Here you can modify the list of Fortran options, which you can turn on or
  2286. off. (See Section 3.9.2.7)
  2287.  
  2288. (See How to change the list of flags)
  2289.  
  2290. 3.9.6.11 Warning-Flags
  2291. ......................
  2292.  
  2293. Here you can modify the list of Warning-Flags, which you can turn on or off.
  2294. (See Section 3.9.2.1)
  2295.  
  2296. (See How to change the list of flags)
  2297.  
  2298. 3.9.6.12 Debugging-Flags
  2299. ........................
  2300.  
  2301. Here you can modify the list of Debugging-Flags, which you can turn on or off.
  2302. (See Section 3.7ging)
  2303.  
  2304. (See How to change the list of flags)
  2305.  
  2306. 3.9.6.13 Optimization-Flags
  2307. ...........................
  2308.  
  2309. Here you can modify the list of Optimization-Flags, which you can turn on or
  2310. off.  (See Section 3.9.2.2)
  2311.  
  2312. (See How to change the list of flags)
  2313.  
  2314. 3.9.6.14 User words
  2315. ...................
  2316.  
  2317. Here you can define your own list of words, which can be specially
  2318. highlighted, when syntax highlighting is enabled. (See Preferences)
  2319.  
  2320. How to change the list of flags
  2321. ...............................
  2322.  
  2323. The syntax of the strings, which you can modify or add with the last
  2324. menu-entries is any string followed by an optional modifier with the
  2325. following meaning:
  2326.  
  2327. `%d'
  2328.      if you activate this option, you *must* enter an integer there
  2329.  
  2330. `%d?'
  2331.      if you activate this option, you *can* enter an integer there
  2332.  
  2333. `%c'
  2334.      if you activate this option, you *must* enter a character there
  2335.  
  2336. `%c?'
  2337.      if you activate this option, you *can* enter a character there
  2338.  
  2339. `%s'
  2340.      if you activate this option, you *must* enter a string there
  2341.  
  2342. `%s?'
  2343.      if you activate this option, you *can* enter a string there
  2344.  
  2345. `%s(STRING)'
  2346.      if you activate this option, you *must* enter a string, which contains
  2347.      only characters defined by the string STRING, there
  2348.  
  2349. `%s?(STRING)'
  2350.      if you activate this option, you *can* enter a string, which contains
  2351.      only characters defined by the string STRING, there
  2352.  
  2353. As an example: the string for the `-O' option is defined as `-O%d?' and the
  2354. `-d' option (See Section 3.7ging) is defined as
  2355.  `-d%s(MNDyrxjsLtfcSlgRJdkamp)'
  2356. which means, the string after `-d' must be a combination of the characters in
  2357.  `MNDyrxjsLtfcSlgRJdkamp'
  2358. If you leave the dialogs for modifying the flag lists with the *OK* button or
  2359. if you activate the *Default* button, all flags are disabled
  2360.  
  2361. 3.9.7 Save options
  2362. ------------------
  2363.  
  2364. Here you can save all the options you currently customized to a file.  RHIDE
  2365. restricts this to saving them only to a file with the `.gpr' suffix (and
  2366. `.gdt' for the desktop file).
  2367.  
  2368. 3.9.8 Load options
  2369. ------------------
  2370.  
  2371. Here you can load the options from any existing project file.
  2372.  
  2373. 3.10 Windows
  2374. ============
  2375.  
  2376. In this menu you get the functions for arranging, resizing and switching
  2377. between the windows on the desktop:
  2378.  
  2379. 3.10.1 Size/move
  2380. ----------------
  2381.  
  2382. With this function you can resize and/or move the current window. After
  2383. selecting this, the frame of the current window will be drawn light-green and
  2384. you can move it with the cursor-keys. To resize it, press <Shift+>
  2385. cursor-keys. To exit the moving/resizing function, press <ESC> or <ENTER>.
  2386. Alternatively you can use the mouse.  For moving, click on the top of the
  2387. window and hold the left button down. Now you can move the window by moving
  2388. the mouse. To resize it, click on lower right corner of the window, hold the
  2389. button down and resize the window by moving the mouse. (This function has the
  2390. hotkey <Ctrl+F5> )
  2391.  
  2392. 3.10.2 Zoom
  2393. -----------
  2394.  
  2395. This brings up the window to maximal size or to previous size.  (hotkey <F5>
  2396. or click with the mouse at the symbol on the right upper corner of the window)
  2397.  
  2398. 3.10.3 Tile
  2399. -----------
  2400.  
  2401. This arranges all the editor-windows on the desktop, to see them all
  2402. simultaneously.
  2403.  
  2404. 3.10.4 Cascade
  2405. --------------
  2406.  
  2407. This arranges all the editor-windows on the desktop, to see the contents of
  2408. the current editor-window and the top-frame of all the others.
  2409.  
  2410. 3.10.5 Next
  2411. -----------
  2412.  
  2413. Hotkey <F6> switches to the next window on the desktop.
  2414.  
  2415. 3.10.6 Previous
  2416. ---------------
  2417.  
  2418. Hotkey <Shift+F6> switches to the previous window on the desktop.
  2419.  
  2420. 3.10.7 Close
  2421. ------------
  2422.  
  2423. This closes the current window. If it is an editor-window and its contents
  2424. were modified, you will be prompted to save it. Hotkey <Alt+F3> or click with
  2425. the mouse on the upper-left symbol of the frame.
  2426.  
  2427. 3.10.8 List
  2428. -----------
  2429.  
  2430. Hotkey <Alt+0> brings up a list of all windows that are currently on the
  2431. desktop. You can select one of them and press <ENTER> to switch to it. With
  2432. <Del> you can close the selected window.
  2433.  
  2434. 3.10.9 Project
  2435. --------------
  2436.  
  2437. With this function you can select the project window (See Section 3.10.9
  2438. window). If it was closed, it will be opened.
  2439.  
  2440. 3.10.10 UserScreen
  2441. ------------------
  2442.  
  2443. Hotkey <Alt+F5> shows the contents of the DOS-Screen.  To leave this
  2444. function, do any event. That means, press any key, or click with the mouse.
  2445.  
  2446. 3.11 Help
  2447. =========
  2448.  
  2449. In this menu you have access to many predefined help entries in the big help
  2450. system.
  2451.  
  2452. 3.11.1 Help
  2453. -----------
  2454.  
  2455. This opens the INFO viewer. Many thanks at this point to Salvador Eduardo
  2456. Tropea (SET). He wrote the very good INFO viewer for use with RHIDE. This was
  2457. also the most important reason for me to write the documentation in Texinfo,
  2458. because you have now an online help available with the produced INFO file
  2459. `rhide.info'.
  2460.  
  2461. Pressing <F1> invokes the help system from everywhere.  For help on using the
  2462. INFO viewer, press <F1> within the help window.  But the above things work
  2463. only if you have correctly installed the INFO files that come with RHIDE.
  2464.  
  2465. If you have installed the binary archive of RHIDE as described in the
  2466. `readme.bin', the INFO files are in `%DJDIR%/info'. If you have not modified
  2467. your `djgpp.env' file, this directory is searched for the INFO files.
  2468.  
  2469. But you can put the INFO files in any directory you want, if you add this
  2470. directory to the %INFOPATH% variable in your `djgpp.env' file in the section
  2471. for `info'.
  2472.  
  2473. 3.11.2 RHIDE Help index
  2474. -----------------------
  2475.  
  2476. This brings up the help window with the main index for getting help for RHIDE.
  2477.  
  2478. 3.11.3 Syntax help submenu
  2479. --------------------------
  2480.  
  2481. In this submenu you can set the files to be searched for getting syntax help
  2482. and you can also customize the options, how this is done.
  2483.  
  2484. 3.11.3.1 Syntax help
  2485. ....................
  2486.  
  2487. If you are in an editor window, and you press <Ctrl+F1> , you get help about
  2488. the function under or before the cursor.  But only if this function is
  2489. documented in the files you have given to be searched for. (See Section 3.2s
  2490. to search) If there was no help found you will be informed.  This feature can
  2491. be used also by clicking with the right mouse button on the word.
  2492.  
  2493. 3.11.3.2 Files to search
  2494. ........................
  2495.  
  2496. Give here a space separated list of files (if you give no suffix, the
  2497. standard suffixes are tried) which should be scanned for getting help for a
  2498. word.
  2499.  
  2500. 3.11.3.3 Options for searching
  2501. ..............................
  2502.  
  2503. Here you can give some options, how the syntax help should work. The
  2504. following search methods are selectable and other options. For all the search
  2505. methods it is possible to get more than one matching topic. If that is true,
  2506. you will find a list, from which you can select the wanted topic.
  2507.  
  2508. Exact
  2509. .....
  2510.  
  2511. When this is selected, you will get syntax help only, if in the selected
  2512. files a topic with that exact name was found.
  2513.  
  2514. Substring
  2515. .........
  2516.  
  2517. When this is selected, you will get syntax help, when the word is a substring
  2518. of any of the nodes in the files to be searched for syntax help.
  2519.  
  2520. Fuzzy
  2521. .....
  2522.  
  2523. This method uses a "Fuzzy search" for getting syntax help. That means it
  2524. looks also for nodes, which are similar to the word for which you want to get
  2525. syntax help.
  2526.  
  2527. Search options
  2528. ..............
  2529.  
  2530. These are several options for the textual search:
  2531. `Case sensitive'
  2532.      When this is selected, the textual search is case sensitive.
  2533.  
  2534. Here you can set the bound for the fuzzy search. The range is from 1 to 1000
  2535. where 1 means that mostly every string matches any other string and 1000
  2536. means the exact match.
  2537.  
  2538. 3.11.4 Index for syntax help
  2539. ----------------------------
  2540.  
  2541. Here you can get a list of all available topics for the syntax help, from
  2542. where you can choose one (<Enter>, <Space> or double click).
  2543.  
  2544. 3.11.5 libc reference
  2545. ---------------------
  2546.  
  2547. This is a separate menu entry to open the libc reference, because this is
  2548. used very often when writing C programs.
  2549.  
  2550. 3.11.6 Help about help
  2551. ----------------------
  2552.  
  2553. This brings up a help-window for instructions and available keystrokes when
  2554. using the integrated INFO viewer.  (See  in "infview", or point your Web
  2555. browser to http://INFO Viewer)
  2556.  
  2557. 4. Detailed description of some parts of RHIDE
  2558. **********************************************
  2559.  
  2560. 4.1 Selecting a window
  2561. ======================
  2562.  
  2563. To select a window you can do the following. If the window has a number, this
  2564. is right on the top-frame, you can select this window by pressing <Alt> and
  2565. this number (but only if the number is a single digit).  Or you click
  2566. anywhere in the window or on the frame of the window with your mouse.
  2567.  
  2568. 4.2 How the editor works
  2569. ========================
  2570.  
  2571. This section should describe the work of the editor. But because the editor
  2572. is now so complex and, not my own work, there is now separate documentation,
  2573. See Documentation for the editor in "SET's editor", or point your Web browser
  2574. to http://editor.html for a detailed and better doc. But you can read also
  2575. more from my doc, which describes the most common (for me) usage of the
  2576. editor.
  2577.  
  2578. Here I describe most of the editor commands. If there is a key command like
  2579. `Ctrl+Q+Y', press <Ctrl> and <Q> simultaneously and after this press <Y>.
  2580.  
  2581. I strongly recommend not to use the technique by holding down the <Ctrl> key
  2582. when pressing the second key in such key combinations, because for instance
  2583. when you press `Ctrl+K' and then `Ctrl+C' you will be prompted if you want to
  2584. interrupt RHIDE (because you pressed the interrupt key). But if you really
  2585. want to use this methode, you should use the `-C' commandline switch when
  2586. starting RHIDE to disable the handling of `SIGINIT'.
  2587.  
  2588. 4.2.1 Erasing commands
  2589. ----------------------
  2590.  
  2591.    * <Ctrl+G> or <Del> erases the character under the cursor or the selected
  2592.      text.
  2593.  
  2594.    * <Ctrl+H> or <Backspace> erases the character before the cursor or the
  2595.      selected text.
  2596.  
  2597.    * <Ctrl+Y> erases the current line.
  2598.  
  2599.    * <Ctrl+Q+Y> erases from the cursor to the end of the line.
  2600.  
  2601.    * <Ctrl+Q+H> erases from the cursor to the beginning of the line.
  2602.  
  2603.    * <Ctrl+T> erases from the cursor to the beginning of the next word on
  2604.      this line.
  2605.  
  2606.    * <Ctrl+Backspace> erases from the cursor to the beginning of the previous
  2607.      word.
  2608.  
  2609. 4.2.2 Cursor moving commands
  2610. ----------------------------
  2611.  
  2612.    * <Ctrl+S> or <Arrow left> moves the cursor one character left.
  2613.  
  2614.    * <Ctrl+D> or <Arrow right> moves the cursor one character right.
  2615.  
  2616.    * <Ctrl+E> or <Arrow up> moves the cursor one line up.
  2617.  
  2618.    * <Ctrl+X> or <Arrow down> moves the cursor one line down.
  2619.  
  2620.    * <Ctrl+A> moves the cursor one word left.
  2621.  
  2622.    * <Ctrl+F> moves the cursor one word right.
  2623.  
  2624.    * <Ctrl+C> or <Page down> moves the cursor one page down.
  2625.  
  2626.    * <Ctrl+R> or <Page up> moves the cursor one page up.
  2627.  
  2628.    * <Ctrl+Q+D> or <End> moves the cursor to the end of the line.
  2629.  
  2630.    * <Ctrl+Q+S> or <Home> moves the cursor to the beginning of the line.
  2631.  
  2632.    * <Ctrl+Q+R> or <Ctrl+PgUp> or `Ctrl+Home' moves the cursor to the
  2633.      beginning of the file.
  2634.  
  2635.    * <Ctrl+Q+C> or <Ctrl+PgDown> or `Ctrl+End' moves the cursor to the end of
  2636.      the file.
  2637.  
  2638. 4.2.3 Text selecting and searching commands
  2639. -------------------------------------------
  2640.  
  2641.    * <Shift> cursor keys select the text as the cursor moves.
  2642.  
  2643.    * <Ctrl+Ins> or <Ctrl+K+K> copy the selected text to the clipboard.
  2644.  
  2645.    * <Shift+Del> or <Ctrl+K+Y> move the selected text to the clipboard.
  2646.  
  2647.    * <Shift+Ins> or <Ctrl+K+C> copy the selected text from the clipboard to
  2648.      the current cursor position.
  2649.  
  2650.    * <Ctrl+Del> delete the selected text.
  2651.  
  2652.    * <Ctrl+Q+A> open the replace dialog.
  2653.  
  2654.    * <Ctrl+Q+F> open the find dialog.
  2655.  
  2656.    * <Ctrl+L> repeat the last replace or find operation.
  2657.  
  2658.    * <Ctrl+K+H> unselect all.
  2659.  
  2660. 4.2.4 Block commands
  2661. --------------------
  2662.  
  2663.    * <Ctrl+K+B> sets the start of the selected block.
  2664.  
  2665.    * <Ctrl+K+K> sets the end of the selected block.
  2666.  
  2667.    * <Ctrl+K+I> indents the selected block by inserting a space at the
  2668.      beginning of each line inside the block.
  2669.  
  2670.    * <Ctrl+K+U> unindents the selected block by erasing one character from
  2671.      the beginning of each line inside the block, which starts with a tab or
  2672.      space.
  2673.  
  2674.    * <Ctrl+K+M> converts all alpha characters inside the selected block to
  2675.      upper case.
  2676.  
  2677.    * <Ctrl+K+O> converts all alpha characters inside the selected block to
  2678.      lower case.
  2679.  
  2680.    * <Ctrl+K+V> moves the selected block to the current cursor position.
  2681.  
  2682.    * <Ctrl+K+Tab> indents the selected block by using the last non selected
  2683.      line as reference for indenting.
  2684.  
  2685.    * <Ctrl+K+Shift+Tab> unindents the selected block by using the last
  2686.      non-selected line as reference for unindenting.
  2687.  
  2688.    * <Ctrl+K+R> inserts the contents of a file at the current cursor position.
  2689.  
  2690.    * <Ctrl+K+W> writes the selected block to a file.
  2691.  
  2692. 4.2.5 Other commands
  2693. --------------------
  2694.  
  2695.    * <Ctrl+V> Toggle insert-/overwrite-mode.
  2696.  
  2697.    * <Ctrl+O> Toggle auto-indent-mode on/off.
  2698.  
  2699.    * <Ctrl+J> Goto line ... (Will be prompted for.)
  2700.  
  2701.    * <Ctrl+K+?> ?, a digit (<0> - <9>). Set a marker in the text (up to ten
  2702.      different markers).
  2703.  
  2704.    * <Ctrl+Q+?> ?, a digit (<0> - <9>). Jump to a marker, which you have
  2705.      previously set.
  2706.  
  2707.    * <Shift+Space> Executes a macro, which can be defined externally by
  2708.      analyzing the last two characters before the cursor.  (See Section 4.13)
  2709.  
  2710. If you have set some markers, they will be stored, so you can use them later
  2711. when restarting RHIDE.
  2712.  
  2713. 4.3 Some hints and problems
  2714. ===========================
  2715.  
  2716. To compile only a single file, you don't need to include it in a project.
  2717. You only have to open it and do a compile. If a file is in your project, you
  2718. can compile it, if you are in its editor-window or if you are in the
  2719. project-window and this file is selected.
  2720.  
  2721. Warnings and errors from compiling a file are listed in the message-window.
  2722. If there are warnings or errors, you can jump to the corresponding source by
  2723. hitting <ENTER> on this message. If this file wasn't already opened, it will
  2724. be opened.
  2725.  
  2726. 4.3.1 Problems with automatic dependencies
  2727. ------------------------------------------
  2728.  
  2729. Most checking of the dependencies works correctly, but there are some few
  2730. situations, where this checking gets confused. The first results in the fact
  2731. that I implemented a cache function for getting the modification time of
  2732. files, that means, most files are 'stat'ed only once, after starting RHIDE.
  2733. But if someone modifies one of the files, which are in the cache, (this can
  2734. be another program, when you run RHIDE in a multitasking environment, such as
  2735. Windows) or if you run your project and it modifies some of these files, the
  2736. internal cache is after this not up to date.
  2737.  
  2738. Here is another situation. Your source files are not in the current
  2739. directory. You have opened a source file for editing and successfully built
  2740. your project. Now you leave RHIDE, because you want to debug your program
  2741. with `FSDB', you copy the source file (in this case it is the file, which you
  2742. have opened in the IDE) to the current directory. Now you debug it and there
  2743. are some errors. You restart RHIDE to make the changes in the file. The
  2744. previously opened file will be opened automatically and you edit it. If you
  2745. do now a *Make*, RHIDE tells you, that your project is up to date, because it
  2746. searches for source files at first in the current directory, and there is the
  2747. unmodified file.
  2748.  
  2749. In this chapter I will give you for some special parts a more detailed
  2750. description of what they do.
  2751.  
  2752. 4.4 Project window
  2753. ==================
  2754.  
  2755. The project window shows you every file, which you have included in your
  2756. project. Most time you work with RHIDE this window should be visible, but you
  2757. can also close it (See Section 3.10.7).
  2758.  
  2759. 4.4.1 Items of your project
  2760. ---------------------------
  2761.  
  2762. The items in the project window, and therefore also in your project, are
  2763. sorted in alphabetical order. This has the effect of faster finding an item
  2764. and you can also move the selecting bar to a specified item by typing the
  2765. name of this item.
  2766.  
  2767. Normally, the alphabetic order of the project items causes no problems because
  2768. the linker searches at first *every* object file for unresolved symbols
  2769. before any library. The statement, the the GNU linker is a one pass linker
  2770. makes sense only for libraries, because they are checked only once for
  2771. unresolved references. That means, if you include libraries in your project
  2772. you must know about the order, where this library is put on the command line
  2773. when linking your program.
  2774.  
  2775. If you have problems with that order, or if you really want to have one
  2776. object file (or library) before some others, you must rename them, to get the
  2777. right position from the name.
  2778.  
  2779. 4.4.2 Open a project item
  2780. -------------------------
  2781.  
  2782. To open an editor window with the selected item press either <ENTER> or
  2783. <SPACE>. If there was already a window with this file opened on the desktop,
  2784. this window will be selected.  This works only if the selected item has a
  2785. known suffix (See Section 2.1). If the selected item is a project file, that
  2786. project will be opened with the side effect that if you close this project,
  2787. the previous one will be reopened.
  2788.  
  2789. 4.4.3 Dependencies of project item
  2790. ----------------------------------
  2791.  
  2792. If you have compiled a file already in RHIDE, you bring up a list with all
  2793. dependencies of that file. In this list the files are show by their basename
  2794. followed by the directory and they are also sorted in alphabetical order.
  2795. From here you can also open an editor window with the selected dependency by
  2796. pressing <SPACE> or <ENTER> on that item.
  2797.  
  2798. 4.4.4 Local options for a project item
  2799. --------------------------------------
  2800.  
  2801. You can change many options for a project item, which are in effect only for
  2802. this file. To do this, hit <Ctrl+O> on the selected item and a dialog is
  2803. shown, where you can change the options.
  2804.  
  2805. At this time you can change the following options.
  2806.  
  2807. Local commandline options
  2808. .........................
  2809.  
  2810. Here you can give some additional defines or any other commandline options,
  2811. when compiling this item.
  2812.  
  2813. exclude from link
  2814. .................
  2815.  
  2816. This is a switch to tell RHIDE, that this file should not be linked with your
  2817. program, but it is compiled and it is checked to determine if your program is
  2818. up to date.
  2819.  
  2820. rebuild seldom
  2821. ..............
  2822.  
  2823. When you select this option the item is compiled only if it does not already
  2824. exist. For most project items this is not usefull but if you have included in
  2825. your project other projects which create a library this might be usefull,
  2826. especially if the library has many source files and you know, that they
  2827. change very seldom.
  2828.  
  2829. Name of the output file
  2830. .......................
  2831.  
  2832. Here you can specify another name as the compiled file. Put here only the
  2833. basename of the file (without any directory)
  2834.  
  2835. Compiler type
  2836. .............
  2837.  
  2838. From that list you can select exactly one type of the compiler, which is used
  2839. to create your output file. Possible values are:
  2840.  
  2841. `Auto'
  2842.      This is the default and should be used in most cases. When this type is
  2843.      selected, RHIDE selects the correct compiler depending on the suffixes
  2844.      of your source and output file.
  2845.  
  2846. `User'
  2847.      If you have any special compiler, which is not known to RHIDE, to create
  2848.      your output file, you must select this and give RHIDE also the calling
  2849.      syntax of that compiler (see below)
  2850.  
  2851. `None'
  2852.      If you don't want to compile this item select this.
  2853.  
  2854. `GNU C compiler'
  2855.      Tell RHIDE to compile this file like a normal GNU C source file.
  2856.  
  2857. `GNU C++ compiler'
  2858.      Tell RHIDE to compile this file like a normal GNU C++ source file.
  2859.  
  2860. `GNU assembler'
  2861.      Tell RHIDE to compile this file like a normal GNU assembler file.
  2862.  
  2863. `GNU Pascal compiler'
  2864.      Tell RHIDE to compile this file like a normal GNU Pascal file.
  2865.  
  2866. User defined compiler
  2867. .....................
  2868.  
  2869. If you have selected the User compiler type, you have to put in the next
  2870. input line the specs on how to call the compiler. These specs can use any
  2871. variables that are known to RHIDE (See Section 4.6) together with normal
  2872. text. As an example I show here, how the builtin C compiler is defined (the
  2873. backslashes at the end of the lines are used only here to show, that the line
  2874. is continued, they are NOT part of the specs):
  2875.  
  2876.  
  2877. $(RHIDE_GCC) $(INCLUDE_DIRS) $(C_DEBUG_FLAGS) $(C_OPT_FLAGS) \
  2878. $(C_WARN_FLAGS) $(C_C_LANG_FLAGS) $(C_EXTRA_FLAGS) $(LOCAL_OPT) \
  2879. -c $(SOURCE_NAME) -o $(OUTFILE)
  2880.  
  2881. Error checking
  2882. ..............
  2883.  
  2884. Here you can select how errors or warnings that are produced by the compiler,
  2885. are checked. Possible values are:
  2886.  
  2887. `Auto'
  2888.      Let RHIDE select the correct way for checking the errors
  2889.  
  2890. `User'
  2891.      Use your own external program to check the output of the compiler to
  2892.      `stderr'
  2893.  
  2894. `None'
  2895.      Do not check any errors, assume that the compiler does it's job every
  2896.      time successfully.
  2897.  
  2898. `builtin C'
  2899.      Check the errors like when compiling a C file
  2900.  
  2901. `builtin assembler'
  2902.      Check the errors like when compiling an assembler file
  2903.  
  2904. `builtin linker'
  2905.      Check the errors like when linking
  2906.  
  2907. `return value'
  2908.      Determine only if the compiling was successful or not by checking the
  2909.      return value of the compiler (zero for success)
  2910.  
  2911. Error program
  2912. .............
  2913.  
  2914. If you have selected above the User error checking, type here the program,
  2915. which should check for errors and/or warnings.  What the external error
  2916. checking program should do:
  2917.  
  2918.    - The program must take a filename as argument, which contain the output
  2919.      to stderr from the compiler (Error and warning messages)
  2920.  
  2921.    - The program has to write to stdout the Warnings, Errors or messages in a
  2922.      special format.
  2923.  
  2924.     `Errors'
  2925.           A line that starts with the string "!Error" (without the double
  2926.           quotes) optionally followed by "!File" and a filename in single
  2927.           quotes and "!Line" followed by a space and a line number and
  2928.           "!Column" followed by a space and a coloumn number.
  2929.  
  2930.           If "!Line" and/or "!Column" are not used they dafault to 0.  The
  2931.           next line contain the error text.  Example:
  2932.  
  2933.  
  2934.           !Error!File'test.c'!line17
  2935.           This is a sample error message
  2936.  
  2937.           This means, that in file 'test.c' at line 17 an error occurred with
  2938.           the description 'This is a sample error message'
  2939.  
  2940.     `Warnings'
  2941.           Warnings have the same format, except that !Error is replaced by
  2942.           !Warning.
  2943.  
  2944.     `Any other line'
  2945.           is treated as a simple message optionally preceeded by !File and
  2946.           !Line.
  2947.  
  2948. 4.5 Builtin compiler specs
  2949. ==========================
  2950.  
  2951. WARNING: THE LIST OF VARIABLES AND STRINGFUNCTIONS DESCRIBED BELOW MIGHT NOT
  2952. BE UPTODATE. IF YOU WANT TO GET INFORMATION ABOUT ALL FEATURES PLEASE LOOK IN
  2953. THE SOURCES FOR RHIDE.
  2954.  
  2955. RHIDE uses for compiling, linking, and the other stages of generating a file
  2956. also specs, like you can change in the local options for a project item (See
  2957. Section 3.8.5). Here the specs, which are used currently:
  2958.  
  2959. $(RHIDE_COMPILE_C)
  2960.      For compiling C source files
  2961.  
  2962. $(RHIDE_COMPILE_CC)
  2963.      For compiling C++ source files
  2964.  
  2965. $(RHIDE_COMPILE_ASM)
  2966.      For compiling assembler source files
  2967.  
  2968. $(RHIDE_COMPILE_PASCAL)
  2969.      For compiling Pascal source files
  2970.  
  2971. $(RHIDE_COMPILE_OBJC)
  2972.      For compiling objective C source files
  2973.  
  2974. $(RHIDE_COMPILE_LINK)
  2975.      For linking
  2976.  
  2977. $(RHIDE_COMPILE_LINK_PASCAL)
  2978.      For linking when the project contain Pascal source files
  2979.  
  2980. $(RHIDE_COMPILE_LINK_PASCAL_AUTOMAKE)
  2981.      This spec is used only, when you have set the (See Section 3.8.8), to
  2982.      tell RHIDE, not to check for dependencies but to use the 'automake'
  2983.      feature of GPC.
  2984.  
  2985. $(RHIDE_COMPILE_ARCHIVE)
  2986.      For creating a library
  2987.  
  2988. $(RHIDE_FSDB)
  2989.      For calling FSDB.
  2990.  
  2991. $(RHIDE_GDB)
  2992.      For calling GDB.
  2993.  
  2994. $(RHIDE_GPROF)
  2995.      For calling GPROF.
  2996.  
  2997. $(RHIDE_GREP)
  2998.      For calling grep.
  2999.  
  3000. All of these specs have a default content in RHIDE, but they can be
  3001. overwritten by setting the environment variable with the same name and any
  3002. other contents.
  3003.  
  3004. 4.6 Builtin variables
  3005. =====================
  3006.  
  3007. This section describes, which variables can be used within RHIDE to get
  3008. values from some of the configurations, which you have made inside RHIDE.
  3009.  
  3010. All of these variables are referenced by a name enclosed in parentheses
  3011. preceeded by a dollar sign. Example: `$(RHIDE_GCC)'. You can overwrite any of
  3012. the following variables, if you define in your environment the same variable
  3013. with any contents you want.
  3014.  
  3015. When RHIDE tries to get the contents of such a variable, it searches at first
  3016. if it is found in it's internal database. If it was not found, the environment
  3017. is checked for such a variable and if that fails, the resulting value is the
  3018. variable itself.
  3019.  
  3020. In addition to the use of variables, RHIDE has a limited ability of using
  3021. string manipulating functions. I have implemented some of the functions,
  3022. which are available with GNU make. They have the same name and should work
  3023. exactly like the GNU make counterpart.
  3024.  
  3025. `$(strip arg)'
  3026.      This function removes any leading and trailing whitespace and converts
  3027.      all multispaces to single spaces from the (whitespace separated list)
  3028.      `arg'.
  3029.  
  3030. `$(addsuffix arg1,arg2)'
  3031.      These functions append on each argument from the whitespace separated
  3032.      list `arg2' the string `arg1'.
  3033.  
  3034. `$(addprefix arg1,arg2)'
  3035.      This is the same as `$(addsuffix arg1,arg2)', except that it puts the
  3036.      string `arg1' before each argument from `arg2'.
  3037.  
  3038. `$(notdir arg)'
  3039.      This removes any directory part from the argument `arg'.
  3040.  
  3041. `$(dir)'
  3042.      This extracts only the directory part from the argument `arg'. If there
  3043.      was no directory in `arg', an empty string is returned. (The directory
  3044.      contains also the drive letter, if there was one)
  3045.  
  3046. `$(subst arg1,arg2,arg3)'
  3047.      This replaces every occurrence of `arg1' in `arg3' with `arg2'
  3048.  
  3049. The following variables have a special meaning in RHIDE with the default
  3050. contents:
  3051. $(RHIDE_GCC)
  3052.      GCC
  3053.  
  3054. $(RHIDE_AS)
  3055.      GCC
  3056.  
  3057. $(RHIDE_GXX)
  3058.      GCC
  3059.  
  3060. $(RHIDE_GPC)
  3061.      GPC
  3062.  
  3063. $(RHIDE_AR)
  3064.      ar
  3065.  
  3066. $(RHIDE_LD)
  3067.      GCC
  3068.  
  3069. $(RHIDE_LD_PASCAL)
  3070.      GPC
  3071.  
  3072. $(RHIDE_ARFLAGS)
  3073.      rcs
  3074.  
  3075. $(RHIDE_INCLUDES)
  3076.      $(SPECIAL_CFLAGS) $(addprefix -I,$(INCLUDE_DIRS))
  3077.  
  3078. $(RHIDE_LIBDIRS)
  3079.      $(addprefix -L,$(LIB_DIRS))
  3080.  
  3081. $(RHIDE_LIBS)
  3082.      $(addprefix -l,$(LIBS))
  3083.  
  3084. $(RHIDE_LDFLAGS)
  3085.      $(SPECIAL_LDFLAGS) $(addprefix -Xlinker ,$(LD_EXTRA_FLAGS))
  3086.  
  3087. $(RHIDE_COMPILE_C)
  3088.      $(RHIDE_GCC) $(RHIDE_INCLUDES) $(C_DEBUG_FLAGS) \
  3089.      $(C_OPT_FLAGS) $(C_WARN_FLAGS) $(C_C_LANG_FLAGS) \
  3090.      $(C_EXTRA_FLAGS) $(LOCAL_OPT) -c $(SOURCE_NAME) \
  3091.      -o $(OUTFILE)
  3092.  
  3093. $(RHIDE_COMPILE_C_FORCE)
  3094.      $(RHIDE_GCC) $(RHIDE_INCLUDES) $(C_DEBUG_FLAGS) \
  3095.      $(C_OPT_FLAGS) $(C_WARN_FLAGS) $(C_C_LANG_FLAGS) \
  3096.      $(C_EXTRA_FLAGS) -x c $(LOCAL_OPT) -c $(SOURCE_NAME) \
  3097.      -o $(OUTFILE)
  3098.  
  3099. $(RHIDE_COMPILE_CC)
  3100.      $(RHIDE_GXX) $(RHIDE_INCLUDES) $(C_DEBUG_FLAGS) \
  3101.      $(C_OPT_FLAGS) $(C_WARN_FLAGS) $(C_C_LANG_FLAGS) \
  3102.      $(C_CXX_LANG_FLAGS) $(C_EXTRA_FLAGS) $(LOCAL_OPT) \
  3103.      -c $(SOURCE_NAME) -o $(OUTFILE)
  3104.  
  3105. $(RHIDE_COMPILE_CC_FORCE)
  3106.      $(RHIDE_GXX) $(RHIDE_INCLUDES) $(C_DEBUG_FLAGS) \
  3107.      $(C_OPT_FLAGS) $(C_WARN_FLAGS) $(C_C_LANG_FLAGS) \
  3108.      $(C_CXX_LANG_FLAGS) $(C_EXTRA_FLAGS) -c c++ $(LOCAL_OPT) \
  3109.      -c $(SOURCE_NAME) -o $(OUTFILE)
  3110.  
  3111. $(RHIDE_COMPILE_ASM)
  3112.      $(RHIDE_AS) $(RHIDE_INCLUDES) $(C_DEBUG_FLAGS) \
  3113.      $(C_OPT_FLAGS) $(C_WARN_FLAGS) $(C_EXTRA_FLAGS) \
  3114.      $(LOCAL_OPT) -c $(SOURCE_NAME) -o $(OUTFILE)
  3115.  
  3116. $(RHIDE_COMPILE_ASM_FORCE)
  3117.      $(RHIDE_AS) $(RHIDE_INCLUDES) $(C_DEBUG_FLAGS) \
  3118.      $(C_OPT_FLAGS) $(C_WARN_FLAGS) $(C_EXTRA_FLAGS) \
  3119.      -x assembler $(LOCAL_OPT) -c $(SOURCE_NAME) \
  3120.      -o $(OUTFILE)
  3121.  
  3122. $(RHIDE_GPC_FLAGS)
  3123.      $(RHIDE_INCLUDES) $(C_DEBUG_FLAGS) $(C_OPT_FLAGS) \
  3124.      $(C_WARN_FLAGS) $(C_P_LANG_FLAGS) $(C_EXTRA_FLAGS)
  3125.  
  3126. $(RHIDE_COMPILE_PASCAL)
  3127.      $(RHIDE_GPC) $(RHIDE_GPC_FLAGS) $(LOCAL_OPT) \
  3128.      -c $(SOURCE_NAME) -o $(OUTFILE)
  3129.  
  3130. $(RHIDE_COMPILE_PASCAL_FORCE)
  3131.      $(RHIDE_GPC) $(RHIDE_GPC_FLAGS) -x pascal \
  3132.      $(LOCAL_OPT) -c $(SOURCE_NAME) -o $(OUTFILE)
  3133.  
  3134. $(RHIDE_COMPILE_LINK)
  3135.      $(RHIDE_LD) $(RHIDE_LIBDIRS) $(C_EXTRA_FLAGS) \
  3136.      $(RHIDE_LDFLAGS) -o $(OUTFILE) $(OBJFILES) \
  3137.      $(LIBRARIES) $(RHIDE_LIBS)
  3138.  
  3139. $(RHIDE_COMPILE_LINK_PASCAL)
  3140.      $(RHIDE_LD_PASCAL) $(RHIDE_LIBDIRS) $(C_EXTRA_FLAGS) \
  3141.      $(RHIDE_LDFLAGS) -o $(OUTFILE) $(OBJFILES) \
  3142.      $(LIBRARIES) $(RHIDE_LIBS)
  3143.  
  3144. $(RHIDE_COMPILE_LINK_PASCAL_AUTOMAKE)
  3145.      $(RHIDE_LD_PASCAL) $(RHIDE_LIBDIRS) $(RHIDE_LDFLAGS) \
  3146.      -o $(OUTFILE) \
  3147.      --automake=\"$(strip $(RHIDE_GPC_FLAGS))\" \
  3148.      $(RHIDE_GPC_FLAGS) $(SOURCE_NAME) $(LIBRARIES) $(RHIDE_LIBS)
  3149.  
  3150. $(RHIDE_COMPILE_ARCHIVE)
  3151.      $(RHIDE_AR) $(RHIDE_ARFLAGS) $(OUTFILE) $(OBJFILES)
  3152.  
  3153. $(RHIDE_FSDB)
  3154.      fsdb $(OUTFILE) $(addprefix -p ,$(SRC_DIRS)) $(PROG_ARGS)
  3155.  
  3156. $(RHIDE_GDB)
  3157.      gdb $(OUTFILE) $(addprefix -d ,$(SRC_DIRS))
  3158.  
  3159. $(RHIDE_GREP)
  3160.      grep -n $(prompt arguments for GREP)
  3161.  
  3162. $(RHIDE_GPROF)
  3163.      gprof $(OUTFILE)
  3164.  
  3165. The following are not used as real variables, but they are used to get the
  3166. contents of options from RHIDE. But you can override them also by setting
  3167. them as an environment variable.
  3168.  
  3169. $(INCLUDE_DIRS)
  3170.      All the include directories
  3171.  
  3172. $(LIB_DIRS)
  3173.      All the library directories
  3174.  
  3175. $(SOURCE_NAME)
  3176.      The actual compiled source file
  3177.  
  3178. $(OUTFILE)
  3179.      The actual created file
  3180.  
  3181. $(C_DEBUG_FLAGS)
  3182.      All the debugging flags
  3183.  
  3184. $(C_OPT_FLAGS)
  3185.      All the optimization flags
  3186.  
  3187. $(C_WARN_FLAGS)
  3188.      All the warning flags
  3189.  
  3190. $(C_C_LANG_FLAGS)
  3191.      All the C language flags
  3192.  
  3193. $(C_CXX_LANG_FLAGS)
  3194.      All the C++ language flags
  3195.  
  3196. $(C_P_LANG_FLAGS)
  3197.      All the Pascal language flags
  3198.  
  3199. $(LIBS)
  3200.      All the libraries, which are given in the libraries options
  3201.  
  3202. $(LD_EXTRA_FLAGS)
  3203.      All the additional linker options
  3204.  
  3205. $(LOCAL_OPT)
  3206.      All the local options for that project item
  3207.  
  3208. $(OBJFILES)
  3209.      All the destination files, which are part of the project and which are
  3210.      not a library and not excluded from linking
  3211.  
  3212. $(LIBRARIES)
  3213.      All the libraries, which are explicitly included in the project and not
  3214.      excluded from linking
  3215.  
  3216. $(SPECIAL_CFLAGS)
  3217.      Some special flags for `GCC'. Currently only the `-nostdlib' switch.
  3218.  
  3219. $(SPECIAL_LDFLAGS)
  3220.      Some special flags for `GCC' when linking. Currently only the switches
  3221.      `-pg' and `-nostdlib'.
  3222.  
  3223. $(prompt TITLE)
  3224.      RHIDE prompts for arguments which get the title `TITLE' and insert the
  3225.      parameters here.
  3226.  
  3227. 4.7 Change the defaults of RHIDE
  3228. ================================
  3229.  
  3230. If you have special wishes for compiling your source files, you can configure
  3231. for RHIDE mostly everything. For adding support for other than the builtin
  3232. known file types (See Section 4.6). If you want to change the behavior of
  3233. RHIDE for compiling all the known file types you should know at first really
  3234. what you do. If you think, this is a good idea or if you only want only check
  3235. if it works you can do it.
  3236.  
  3237. Before RHIDE compiles any file (this includes also linking and building a
  3238. library) it searches the environment for a variable after the following
  3239. scheme: When compiling a file with suffix `.c' to a file with suffix `.o'
  3240. RHIDE checks for the variable $(RHIDE_COMPILE.c.o). If this variable is
  3241. defined the contents of this variable is taken as the compile spec.
  3242.  
  3243. If you want to change the specs for linking you must take as destination
  3244. suffix `.exe' or `.' and as source suffix the suffix of your object files.
  3245. Example:
  3246.  
  3247. $(RHIDE_COMPILE.o.)
  3248.  
  3249. 4.8 Message window
  3250. ==================
  3251.  
  3252. This window shows every time you compile a file the resulting messages, which
  3253. GCC produces. These messages were converted in a special format to show them
  3254. in the window. Some of the messages contain a file eventually combined with a
  3255. line number. If you press <ENTER> on such a message, the corresponding source
  3256. line in the file will be highlighted and the window with this file will be
  3257. selected. If this file is not already on the desktop, it will be opened.
  3258.  
  3259. If the file, to which the messages refer, is already in the foreground you can
  3260. see the selected source line for your messages directly on the screen.
  3261.  
  3262. 4.9 Syntax highlighting
  3263. =======================
  3264.  
  3265. Syntax highlighting is now supported directly by the editor. It should work
  3266. in mostly every situation for all the supported types. Currently (in RHIDE)
  3267. only the C/C++ style syntax highlight and the Pascal style syntax highlight
  3268. are supported.
  3269.  
  3270. With which style a file is highlighted is chosen by RHIDE by checking the
  3271. suffix of the file and determining the file type from that suffix.  (See
  3272. Section 2.1)
  3273.  
  3274. 4.10 Checking the dependencies
  3275. ==============================
  3276.  
  3277. This is one of the main parts of RHIDE. To speed up the work, I have added a
  3278. cache for checking the modification time of a file and for finding a file
  3279. (computing the full name of a file). But sometimes the data in the cache
  3280. isn't valid, especially when running under Windows. If you see this, you can
  3281. clear the cache by leaving RHIDE and starting again.
  3282.  
  3283. If you didn't do any special things but have problems with it, please run
  3284. RHIDE with the `-df' switch and try to find out, where the problem is and
  3285. post it to me so I can fix it.
  3286.  
  3287. 4.11 What is Turbo Vision
  3288. =========================
  3289.  
  3290. The Turbo Vision library is part of Turbo C++ version 3.1. I have ported this
  3291. library to use with DJGPP because I think it is the most powerful text
  3292. windowing library, which is available for MS-DOS. With the help of this
  3293. library you can write a front end application which looks very well and has
  3294. an interface that is easy to use.
  3295.  
  3296. The Turbo Vision library is not only a window based text user interface, it
  3297. is also a very good event handling mechanism. It supports the use of the
  3298. mouse and keyboard with the ability of defining and using of hotkeys.  That
  3299. means, you can assign to some key or combinations of keys, which function
  3300. should be executed.
  3301.  
  3302. The main parts of an application, which is using this library, are the
  3303. desktop, the menu bar and the status line. The menu bar is usually shown as
  3304. the topmost line of the screen. There are shown the main parts of the pull
  3305. down menus, from where you can select the most functions, which are
  3306. implemented in an application.
  3307.  
  3308. To use the menu you can use the mouse as well the keyboard. With the mouse
  3309. you can click every where on a menu entry and the corresponding function will
  3310. be executed. There are some different actions, which a menu entry can have.
  3311. At first some of them, these are, for example, all the entries in the menu
  3312. bar, open a submenu with more menu entries which are related to the name of
  3313. this main entry. And the others, most in such a submenu, execute a definite
  3314. function of the application.
  3315.  
  3316. With the keyboard you can walk through the menu very simply. Press <F10> to
  3317. activate the menu bar. In the pull down menus you can use the cursor keys to
  3318. move the highlighted bar up and down and with the cursor right and left keys
  3319. you can switch to next or previous menu. With the <ENTER> key you activate
  3320. the function, which corresponds to this entry. If this was a submenu, which
  3321. is indicated with a symbol like a small right arrow, this will be opened.
  3322.  
  3323. If you walk through the menu with the cursor keys or the mouse (hold the left
  3324. mouse button down and move the mouse) in the status line will be shown for
  3325. each entry a short hint for the function of this menu entry.
  3326.  
  3327. 4.12 How the dialogs work
  3328. =========================
  3329.  
  3330. In a dialog, like the file open dialog, are many things which you can select
  3331. or where you can type in some data. At first some general functions. If you
  3332. press <ESC> the dialog will be closed and nothing will be changed. The same
  3333. can be done with the mouse by clicking on the close symbol (this is the small
  3334. symbol on upper left frame of the dialog).
  3335.  
  3336. In the next paragraphs I will describe the most used elements of a dialog.
  3337. For selecting each element of a dialog you can use the <Tab> key to select
  3338. the next element in the dialog or the `Shift+Tab' key, to select the previous
  3339. element.
  3340.  
  3341. A button is a rectangle with some text on it. If you activate such a button a
  3342. specified action is executed. To select a button you can use the <Tab> key,
  3343. until the button is specially highlighted and press <ENTER> then. Most times
  3344. a character of the text on this button has a different color. So you can
  3345. press <Alt> plus this character to activate the button. With the mouse you
  3346. can simply click on a button to activate it.
  3347.  
  3348. A Listbox is a collection of some strings in one or more columns and rows as
  3349. needed. The project window (See Section 3.10.9 window) is such a Listbox with
  3350. the names of the project items. You can use the cursor keys to move the focus
  3351. bar in the list, or if it is a sorted Listbox, you can also type some
  3352. characters and the focus will move to the item, which starts with these
  3353. characters. To select a item in a list box, press <SPACE> or <ENTER> or
  3354. double click with mouse on it.
  3355.  
  3356. In an input line you can type some text which can be edited with the usual
  3357. editing keys.
  3358.  
  3359. A checkbox is a collection of options, which can be turned on or off.  Each
  3360. option has in front of it a small indicator, if it is turned on (an X is
  3361. shown) or not (the X is not shown). To toggle such an option, use the cursor
  3362. keys to move the focus to the option you want and press <SPACE> or, if a
  3363. character in an option string is highlighted you can press this key and the
  3364. option will be turned on or off or click with the mouse on the option.
  3365.  
  3366. Radiobuttons are similar to Checkboxes, but there you can select only one of
  3367. all the shown options.
  3368.  
  3369. 4.13 Defining macros
  3370. ====================
  3371.  
  3372. Please look for a detailed documentation here: See Documentation about Pseudo
  3373. Macros in "SET's editor", or point your Web browser to http://editor.html
  3374.  
  3375. 4.14 The INFO Viewer
  3376. ====================
  3377.  
  3378. The integrated help system of RHIDE is based on the INFO Viewer written by
  3379. Salvador Eduardo Tropea (SET) <ice@inti.edu.ar>. It gives you access to all
  3380. the INFO files which you have installed in the correct directories as is done
  3381. for `info.exe'.
  3382.  
  3383. To get help about the INFO Viewer hit <F1> when the help-window is opened or
  3384. follow this link to See Section 'Top' in documentation for 'The Info Viewer'.
  3385.  
  3386. In addition to getting help with this system you can also copy text from the
  3387. help screen to the clipboard. This is useful if you want for instance to copy
  3388. an example from the libc reference in your program. This feature is not so
  3389. powerful as in the editor, but it is good enough. To mark some text use the
  3390. <Shift> and cursor keys and copy the selected text with `Ctrl+Ins' to the
  3391. clipboard.
  3392.  
  3393. In RHIDE you have also the possibility to get help about a specific function.
  3394. Currently this works only for functions, which are documented in the libc
  3395. reference. For doing this, move the cursor to the function and hit <Ctrl+F1>
  3396. or click with the right button of the mouse on that word.
  3397.  
  3398. 4.15 RCS and RHIDE
  3399. ==================
  3400.  
  3401. RHIDE knows a little bit about RCS, the Revision Control System. Since RCS is
  3402. available also for DJGPP I enabled now some features to use RHIDE also on
  3403. packages which use RCS.
  3404.  
  3405. RHIDE can handle RCS files in the way, that it searches for a checked in
  3406. source file if the normal source file was not found. The complicatest part
  3407. here was to determin the correct RCS file name from the source name.
  3408. (Especially under DJGPP this is a problem since under raw DOS it is not
  3409. possible to use names like 'foo.c,v').
  3410.  
  3411. So I decided to use the external program `rlog' which comes with the RCS
  3412. package to determine the actual correct RCS source name. I did so because the
  3413. DJGPP implementation knows enough about the DOS limitation and how to solve
  3414. them.
  3415.  
  3416. This help here is not ment to be a RCS introduction. If you don't know what
  3417. RCS is or what can be done with it, please look in the manuals wich come with
  3418. RCS.
  3419.  
  3420. Here now what RHIDE knows about the RCS files. If a source file was not
  3421. found, it's RCS name is computed with the spec `$(RHIDE_RLOG)' which defaults
  3422. to `$(shell rlog -R $(rlog_arg))' where `$(rlog_arg)' is substituted at
  3423. runtime with the actual wanted source file.
  3424.  
  3425. This spec can be overwritten to speed it up. An example for this can be found
  3426. in the distributed sample environment file `rhide_.env'.
  3427.  
  3428. When RHIDE only wants to compile the file or only to get the modification
  3429. time it is temporary checked out (without locking it) and after the needed
  3430. operation (compiling) it is removed (for checking the modification time it is
  3431. not checked out, but the time form the RCS file is taken).
  3432.  
  3433. If you want to open that file for editing the same is done but now it is
  3434. checked out with setting a lock and it is not checked in after closing the
  3435. window. The spec for checking the file out is `$(RHIDE_CO)' which can be
  3436. overwritten also and it defaults to `$(shell co -q $(co_arg))' where the
  3437. switch `-l' is added when it is checked out for edititing otherwise
  3438. `$(co_arg)' is substituted at runtime only with the wanted source file.
  3439.  
  3440. 5. Debugging with RHIDE
  3441. ***********************
  3442.  
  3443. For debugging your programs you need now no external debugger, because RHIDE
  3444. has one integrated. The integrated debugger is not code which I have written,
  3445. but it is GDB 4.16, which is linked in RHIDE.
  3446.  
  3447. Because RHIDE uses a special method to communicate with GDB it is currently
  3448. not possible to use all of the features, which GDB has. I have implemented at
  3449. this time the most important functions, which are needed to debug your
  3450. program. So it is not possible to give GDB the same commands as when running
  3451. GDB stand alone. That means, if you need any very special feature of GDB you
  3452. must run GDB.
  3453.  
  3454. The integrated debugger is a real source level debugger like GDB. If you step
  3455. through your program you will see every time exactly where in the sources you
  3456. are. But to use the ability to debug your program needs, that you have
  3457. compiled your source files with debugging information and these symbols must
  3458. not have been stripped from the executable.
  3459.  
  3460. 5.1 Limitations of the integrated debugger
  3461. ==========================================
  3462.  
  3463. Because the integrated debugger is GDB, you will have all the limitations
  3464. which GDB has in addition to well known DJGPP and/or MS-DOS limitations.
  3465. Here is a (not complete) list of known misfeatures:
  3466.  
  3467.    * Signals are not correctly handled every time by distinguishing between
  3468.      the debuggee and RHIDE
  3469.  
  3470.    * Remote debugging is NOT supported
  3471.  
  3472.    * Debugging of graphic programs may work or not depending on the software
  3473.      you are using. Currently only the VESA modes and the standard VGA
  3474.      graphic modes are supported.
  3475.  
  3476.    * When using the integrated debugger under Windows 3.1x (in Windows 95
  3477.      there is no such limitation) the number of breakpoints is limited to 3,
  3478.      because you can use there only hardware breakpoints. The i386 supports
  3479.      only 4 hardware breakpoints and 1 is needed for internal use.  This is a
  3480.      common problem for all DJGPP debuggers. (Try to use FSDB with more than
  3481.      3 breakpoints under Windows 3.1x)
  3482.  
  3483.    * Sometimes the source line, which is shown by RHIDE in assuming that the
  3484.      execution is there, is not correct. But this is NOT a bug of RHIDE and
  3485.      NOT of GDB. This is a bug in GCC which produces wrong line number
  3486.      information in the object files. Here is a very simple test program,
  3487.      with which you can see this problem.
  3488.  
  3489.           /* This is an example, that GCC produces wrong line number
  3490.              information for code which is optimized out. (compile this
  3491.              with -O) */
  3492.           
  3493.           int a = 1;
  3494.           int b = 2;
  3495.           
  3496.           int main()
  3497.           {
  3498.             if (a == b) return 0;
  3499.             if ((a + 1) == b) return 1;
  3500.             return 0; /* The debugger should never come here,
  3501.                          but it comes */
  3502.           }
  3503.  
  3504. 5.2 Dual display debugging
  3505. ==========================
  3506.  
  3507. RHIDE supports now also to use an installed dual display. This is when you
  3508. have installed in addition to your VGA card a monochrome display card
  3509. together with a monitor. RHIDE checks this by asking the BIOS if it is
  3510. present and if this is true and the option is enabled (See Preferences) then
  3511. RHIDE switches automatically to the secondary display when debugging and your
  3512. program will run on the primary display.
  3513.  
  3514. With this debugging technique you will get the best debugging results
  3515. especially when debugging graphics programs.
  3516.  
  3517. To use the dual display with RHGDB use the `-D' switch for RHGDB.
  3518.  
  3519. 5.3 Using the integrated debugger
  3520. =================================
  3521.  
  3522. If you are familiar with Borland's debugger, you will see, that most of the
  3523. functions of that debugger are implemented in the same or in a similar way
  3524. (this includes the key bindings).
  3525.  
  3526. 5.3.1 Stepping through the source code
  3527. --------------------------------------
  3528.  
  3529. For stepping through your code, there are three ways. This is at first the
  3530. Step-function <F8>. With this you execute a complete source line. If there is
  3531. a function call at the current execution point, this function is called
  3532. without debugging it. This technique is the same like the `next'-command from
  3533. GDB.
  3534.  
  3535. The next way is the Trace-function.  It is like the Step-function, <F7>,
  3536. except that if there is a function call at the current execution point, you
  3537. will go into this function when there is debugging information for that
  3538. function available.  This technique is the same as the `step'-command from
  3539. GDB.
  3540.  
  3541. And the third way is the Goto-Cursor-function. For this, move the cursor to
  3542. the line in your source code and press <F4>. Now the execution of your
  3543. program is continued until it comes to that line. Sometimes you will get an
  3544. error message, that for the specified line is no code generated.  This comes
  3545. from the optimization of your code by GCC. In this case try a line below or
  3546. above.
  3547.  
  3548. 5.3.2 Evaluating the contents of variables
  3549. ------------------------------------------
  3550.  
  3551. You can evaluate also the the contents of variables, when your program has
  3552. been started. For this you can press `Ctrl+F4' and you will see a dialog,
  3553. where you can type in the expression to evaluate, a line with the result and
  3554. a line, where you can give the expression a new value. If you have pressed
  3555. this in an editor window, RHIDE tries to find the word under the cursor and
  3556. copies this as default in the expression input line. To get the contents of
  3557. this expression you have to press the *Evaluate*-button.
  3558.  
  3559. If the expression could not be evaluated so it is shown in the result line.
  3560. For the exact syntax of getting the contents of an expression See Section
  3561. 'Expressions' in documentation for 'gdb'. You can also show the value of the
  3562. expression in several formats, See Section 'Output Formats' in documentation
  3563. for 'gdb'.
  3564.  
  3565. In addition to the functionality of the Borland debuggers, GDB (and of course
  3566. also RHIDE) can evaluate the result of function calls. If you have, for
  3567. example, in your debugged program a function
  3568.      int foo(int arg1)
  3569.      {
  3570.      /* do something and return a value */
  3571.      }
  3572. defined, you can type in the expression input line
  3573.      foo(16)
  3574. and you will get as result, what the function would return, if it is called
  3575. with the argument `16'. As arguments you can also use any known variable or
  3576. complex expressions.
  3577.  
  3578. A known limitation is, that the expressions are NOT checked for validity.
  3579. That means, you can produce any exception there, which will terminate your
  3580. program. As an example type in the expression input line
  3581. 3/0
  3582. And, of course, you cannot assign to a function call a new value.
  3583.  
  3584. As an special side effect you can use this also as a calculator. You can
  3585. evaluate any trivial or complex expression and this is also available, if you
  3586. haven't started the integrated debugger.
  3587.  
  3588. 5.3.3 Watching the contents of variables
  3589. ----------------------------------------
  3590.  
  3591. In addition to a single look at the contents of a variable, you can add the
  3592. variable to a list which is updated after each debugger step and is shown in
  3593. the watching window. For this function you can use the hotkey `Ctrl+F7'.
  3594.  
  3595. Within the watch window you can press <Enter> on an expression to change that
  3596. expression (NOT the contents of that expression) or you can press <Del> to
  3597. remove the variable from the watch window.
  3598.  
  3599. 5.4 Problems with C++ programs
  3600. ==============================
  3601.  
  3602. Because GDB cannot handle correctly C++ debugging information when it is
  3603. generated as COFF debugging information (with stabs debugging information
  3604. there is no such limitation and you can skip reading more) you will have many
  3605. problems when debugging C++ programs to get the contents of a variable when
  3606. it is a member of a class. Because GDB does not detect, that your program is
  3607. a C++ program, it sees it as a normal C program and so GDB does nothing know
  3608. about classes and all what have to do with it.
  3609.  
  3610. For accessing the member of a baseclass you must do some tricks. Let me
  3611. explain it on an example:
  3612.  
  3613.      class A
  3614.      {
  3615.      public:
  3616.        int a;
  3617.      };
  3618.      
  3619.      class B : public A
  3620.      {
  3621.      public:
  3622.        void test();
  3623.      };
  3624.      
  3625.      void B::test()
  3626.      {
  3627.        fprintf(stdout,"%d\n",a);
  3628.      }
  3629.  
  3630. If you debug the program in the function `B::test()' and you want to get the
  3631. contents of the member `a', you have to access it with `this->A.a' !!! That
  3632. means: At first you must access all members with the implicit `this' variable
  3633. and at second you must give all baseclasses until that, where the member was
  3634. declared.
  3635.  
  3636. 5.5 Using Breakpoints
  3637. =====================
  3638.  
  3639. Breakpoints are a very useful thing when debugging a program. You can set a
  3640. breakpoint at any location of your program and run it. It will be
  3641. automatically stopped, if the program execution reaches the breakpoint.
  3642.  
  3643. 5.5.1 Setting a breakpoint
  3644. --------------------------
  3645.  
  3646. For setting a breakpoint there are two different ways. The first is by
  3647. setting a breakpoint at any line by pressing `Ctrl+F8'. You will see, that
  3648. there is a breakpoint set, that this line is shown in another color. If you
  3649. hit `Ctrl+F8' on a line, which has already a breakpoint, the breakpoint at
  3650. this line is removed.
  3651.  
  3652. 5.5.2 Modifying and setting a breakpoint
  3653. ----------------------------------------
  3654.  
  3655. The second way is by setting a breakpoint with the breakpoint dialog which is
  3656. selectable only from the menu. There you will see any breakpoint for your
  3657. program. These breakpoints can be modified now in many things.  In this
  3658. dialog you can enable/disable a breakpoint. This is not the same as deleting
  3659. and resetting it. If you disable a breakpoint, it is stored internally but it
  3660. is not used. If you enable it again all the settings for that breakpoint,
  3661. which you have already made, are remembered.
  3662.  
  3663. In the breakpoint dialog you can also set or delete a breakpoint with the
  3664. given buttons. If you want to set a new breakpoint, use the New-Button. Then
  3665. you will get a dialog which you also get when you press the Modify-Button. In
  3666. this dialog you can change many things of the breakpoint.
  3667.  
  3668. In this dialog is the only point for setting a breakpoint at a specified
  3669. function. For doing this you must set at first the type of the breakpoint to
  3670. Function. Then you can type in the function input line the name of the
  3671. function or hit <Ctrl+F1> to get a list of functions which are available from
  3672. where you can select one with <Enter>.
  3673.  
  3674. For setting a breakpoint at a specified line, set the breakpoint type to Line
  3675. and type in the filename and the linenumber.
  3676.  
  3677. The next what you can modify on a breakpoint is a condition. That means that
  3678. the breakpoint should stop your program only, if the condition is true. Write
  3679. the condition in the programming language of your source file and you can use
  3680. any accessible variable and you can call also functions of the debugged
  3681. program. For other information about the syntax See Section 'Conditions' in
  3682. documentation for 'gdb'.
  3683.  
  3684. And at last you can give your breakpoints also a count. A breakpoint count is
  3685. a number, how often this breakpoint is ignored. That means, if you type
  3686. there, for example, `10', then the RHIDE stops the execution of the program
  3687. only, if it comes to that point the tenth time. WARNING: This count is set by
  3688. RHIDE only once. After the breakpoint is really hit, from now on the
  3689. breakpoint stops your program every time, the breakpoint is reached.
  3690.  
  3691. 5.5.3 Problems with breakpoints
  3692. -------------------------------
  3693.  
  3694. Currently there is a big problem, when you have set a breakpoint at a line
  3695. (not at a function) of your program and you edit now the source code. If you
  3696. insert or delete some lines the breakpoints, which are set at lines after or
  3697. at the modified lines are NOT updated to the correct line number.
  3698.  
  3699. 6. Debugging with RHGDB
  3700. ***********************
  3701.  
  3702. In addition to RHIDE, which has an integrated debugger, there is also a
  3703. stand-alone debugger called RHGDB. (The name comes from my initials and GDB)
  3704.  
  3705. RHGDB has the same abilities as RHIDE for debugging your program. But it has
  3706. no editor. The source files are shown in read only windows where you can move
  3707. the cursor and other things (except editing) like in RHIDE.
  3708.  
  3709. The menu tree is analog of RHIDE's but (of course) it has not all the menu
  3710. entries of RHIDE, because RHGDB should be used only for debugging and nothing
  3711. else.
  3712.  
  3713. I have written it to debug DJGPP programs, for which there is no RHIDE
  3714. project file available but the program has debugging information and, if you
  3715. are short of memory, it is much smaller than RHIDE.
  3716.  
  3717. The syntax for using RHGDB is very simple. Run it with your program as the
  3718. first argument followed by any argument, which should be passed to your
  3719. program.
  3720.  
  3721. RHGDB saves and reads the options from files with the suffix `.rgd'.  This is
  3722. done automatically when you run RHGDB with your program as argument by
  3723. searching a file with the same basename of your program and the suffix `.rgd'
  3724. and in this file the options are also automatically stored, when you exit
  3725. RHGDB.
  3726.  
  3727. Alternatively you can also save/read the options from within RHIDE by
  3728. selecting the corresponding menu entries from the Options menu.
  3729.  
  3730. To use the the "Dual display debugging" feature of RHGDB you must give on
  3731. commandline the `-D' switch.
  3732.  
  3733. 7. Some FAQs
  3734. ************
  3735.  
  3736. **Question*: I have enabled the `Use tabs' option, but if I move the cursor
  3737. through that tab, it seems, that RHIDE uses spaces*
  3738.  
  3739. *Answer*:This behavior cannot (currently) be changed. Even when you have
  3740. enabled the use of real tabs (characters with the code 9), the cursor is
  3741. moved as if there are spaces.
  3742.  
  3743. **Question*: Are there any sample project files, to show how RHIDE works?*
  3744.  
  3745. *Answer*:The sources of RHIDE include many project files to rebuild at least
  3746. RHIDE with itself and many others.
  3747.  
  3748. **Question*: I have written some libraries. How can I use them in a project?*
  3749.  
  3750. **Question*: How I can use a library, which I have?*
  3751.  
  3752. *Answer*: There are some different ways to do this. On the one side you can
  3753. include them directly in the project with the *Add to project item* function
  3754. (See Section 3.8.3). But if they are not in the current directory, you must
  3755. also set the library search path to the directory, where they are. (See
  3756. Section 3.9.1.2). The other variant is to include them in the list of
  3757. libraries. (See Section 3.9.3)
  3758.  
  3759. If this library is created with RHIDE, that means you have a project file for
  3760. building this library you can also simply include that project file in your
  3761. project. For examples, look at the RHIDE sources in the project file for
  3762. RHIDE.
  3763.  
  3764. **Question*: I have a directory, where all my include files are. Can I setup
  3765. RHIDE to have this directory every time in the include search path, when
  3766. creating a new project?*
  3767.  
  3768. **Question*: I prefer the 80x28 video mode over the default 80x25 mode. How I
  3769. can turn this mode on by default for all newly created project files?*
  3770.  
  3771. *Answer*: You can create a default project file. From this file RHIDE reads
  3772. all the options, if it creates a new project. The default project must have
  3773. the same basename as the executable of RHIDE and must be located in the same
  3774. directory.
  3775.  
  3776. The creation of such a default project file is very simple. Change to the
  3777. directory, where `rhide.exe' is located and run there
  3778.      rhide rhide
  3779.  
  3780. Now make any changes in the options which you want to have as default for all
  3781. newly created projects. This includes also settings in the various search
  3782. paths. If you are ready, exit RHIDE and this project file will be your
  3783. default project file.
  3784.  
  3785. **Question*: I know, that I can create a default project file. Can I create
  3786. and use more than one?*
  3787.  
  3788. *Answer*:Since DJGPP supports a quasi-Unix-like link for executables, you can
  3789. create such a link also for RHIDE. As an example I will create a link to
  3790. `rhide.exe' with the name `myrhide.exe'. At first I have to create the new
  3791. file.
  3792.      stubify -g myrhide.exe
  3793. Now I must tell `myrhide.exe' which program it really should run.
  3794.      stubedit myrhide.exe runfile=rhide
  3795. Thats all. Or, if you have installed the GNU fileutils, you can use also now
  3796. the `ln.exe' program to create the link:
  3797.      ln -s rhide.exe myrhide.exe
  3798.  
  3799. **Question*: I don't want to type every time I start RHIDE the commandline -L
  3800. DE to use the German user interface. Is there any better way?*
  3801.  
  3802. *Answer*: Create an environment variable LANGUAGE with your preferred
  3803. language like
  3804.      set LANGUAGE=de
  3805. and your problem is solved.
  3806.  
  3807. **Question*: I have 4 Mb RAM in my computer and every time, when I compile
  3808. large files with optimizations enabled, my hard disk is working very hard.*
  3809.  
  3810. *Answer*:Buy more RAM!
  3811.  
  3812. **Question*: I heard something about a newer version RHIDE. From where I can
  3813. get exact information about this?*
  3814.  
  3815. *Answer*: See at the RHIDE home page, at this URL:
  3816.  
  3817.      http://www.tu-chemnitz.de/~rho/rhide.html
  3818.  
  3819. .  (valid until at least 30. Sepetember 1997) This page contains the latest
  3820. news and the latest version of RHIDE.
  3821.  
  3822. **Question*: I have a lot of money and don't know what to do with it. Can you
  3823. help me?*
  3824.  
  3825. *Answer*: Send it to me, so I can spend more time for developing RHIDE. My
  3826. Address is:
  3827.      Robert Höhne
  3828.      Am Berg 3
  3829.      D-09573 Dittmannsdorf
  3830.      Germany
  3831.  
  3832. **Question*: I think, I found a bug in RHIDE. How can I report it?*
  3833.  
  3834. *Answer*:At first try for your own to solve the problem by checking the
  3835. documentation.
  3836.  
  3837. If the bug is releated to the editor (some keys do not work, autoindenting is
  3838. not like you expect, program creash after some special editing ....) please
  3839. send them to Salvador Eduardo Tropea (SET) <ice@inti.edu.ar>, because he is
  3840. the author of the in RHIDE integrated editor.
  3841.  
  3842. See at the RHIDE home page, at this URL:
  3843.  
  3844.      http://www.tu-chemnitz.de/~rho/rhide.html
  3845.  
  3846. (valid until at least 30. September 1997), if this problem was already
  3847. reported by other users. As the next ask the problem in the news group
  3848. comp.os.msdos.djgpp Newsgroup, because there may be some other people with
  3849. the same problem, and they can give you an answer or I, because I read this
  3850. group also.
  3851.  
  3852. Linux users should post thier problems in the linux group. To make sure that
  3853. I will read it there also, please include in the subject anywhere the word
  3854. RHIDE so I will find it, because I do not read any article there because the
  3855. group is too heavily used. Currently I do only a subject search for the word
  3856. RHIDE and if not found I mark the group as readed by me. Sorry for this, but
  3857. compared with the very good comp.os.msdos.djgpp group the linux groups are
  3858. too large for seriously diskussion (at least for me).
  3859.  
  3860. If this don't help you, do the following:
  3861.  
  3862.      Try to reproduce the error with the smallest possible project or source
  3863.      file. Run RHIDE with all debugging options enabled and redirect the
  3864.      printed output to a file. (See Section 1.5.2) Send me this file and a
  3865.      detailed as possible description of the problem and include in your
  3866.      report the exact version of RHIDE you are using.
  3867.  
  3868.      The exact version is shown in the About-Dialog and means the version
  3869.      number together with the build date.
  3870.  
  3871.  
  3872. And a last note. If I get bug reports or questions or problems with RHIDE
  3873. which I think that they are of common interest be warned that I bounce them
  3874. simply to the news groups because at this time it is impossible for me to
  3875. answer all the mails I get. So the best is to post the questions and/or
  3876. problems only in the news groups.
  3877.  
  3878. 8. Index
  3879. ********
  3880.  
  3881.  
  3882.  
  3883. * Adding a file to the project: Section 3.8.3.
  3884. * Additional options for GCC: Section 3.9.5.
  3885. * Arguments for your program: Section 3.5.6.
  3886. * Assembler files, which must be preprocessed: Section 2.1.
  3887. * Automatic dependencies: Section 3.9.1.5.
  3888. * Automatic dependencies, problems with it: Section 4.3.1.
  3889. * Automatic indention:                   autoindent.
  3890. * Automatic intention:                   Intelligent C indenting.
  3891. * Background colors, 16:                 16 background colors.
  3892. * Backup files:                          create backup files.
  3893. * Blinking colors:                       16 background colors.
  3894. * block commands: Section 4.2.4.
  3895. * Bug report: Section 3.1.2.
  3896. * Bug, reporting it: Chapter 7.
  3897. * Build: Section 3.6.4.
  3898. * Build the library: Section 3.6.3.
  3899. * Building a library: Section 3.8.7.
  3900. * Building an executable: Section 3.8.7.
  3901. * Builtin calculator: Section 5.3.2.
  3902. * Button: Section 4.12.
  3903. * C Flags, edit them: Section 3.9.6.7.
  3904. * C language specific flags: Section 3.9.2.4.
  3905. * C++ flags, edit them: Section 3.9.6.8.
  3906. * Caching of files:                      No file caching.
  3907. * Calculator: Section 3.1.7.
  3908. * Call stack: Section 3.7.6.
  3909. * Cascade the windows: Section 3.10.4.
  3910. * Changing the name of the library: Section 3.8.7.
  3911. * Changing the name of the program: Section 3.8.7.
  3912. * Changing the search paths for files: Section 3.9.1.
  3913. * Checkbox: Section 4.12.
  3914. * Checking dependencies: Section 4.10.
  3915. * Clear: Section 3.3.7.
  3916. * Clearing the dependencies: Section 3.8.9.
  3917. * Clearing the project: Section 3.8.10.
  3918. * Clipboard: Section 3.3.6.
  3919. * Close a project: Section 3.8.2.
  3920. * Close a window: Section 3.10.7.
  3921. * COFF file, Creating: Section 3.8.7.
  3922. * Colors: Section 3.9.6.1.
  3923. * Column cursor:                         Column cursor.
  3924. * Commandline arguments for your program: Section 3.5.6.
  3925. * Commandline options: Section 1.5.
  3926. * Compile: Section 3.6.1.
  3927. * Compile without a project: Section 4.3.
  3928. * Compiler options: Section 3.9.5.
  3929. * COMSPEC: Section 3.2.6.
  3930. * Configuring RHIDE <1>: Section 4.7.
  3931. * Configuring RHIDE: Section 1.2.1.
  3932. * Context help: Section 4.14.
  3933. * Controlling the optimization of the code: Section 3.9.2.2.
  3934. * Controlling the warnings: Section 3.9.2.1.
  3935. * Copy: Section 3.3.4.
  3936. * Copy to Windows clipboard: Section 3.3.8.
  3937. * Cplusplus options: Section 3.9.2.5.
  3938. * Creating a COFF file: Section 3.8.7.
  3939. * Creating a makefile <1>: Section 3.8.11.
  3940. * Creating a makefile <2>:               all dependencies in makefile.
  3941. * Creating a makefile: Section 1.6.
  3942. * Creating a new file: Section 3.2.2.
  3943. * Creating a new project: Section 3.8.1.
  3944. * Creating backup files:                 create backup files.
  3945. * Cross cursor <1>:                      Column cursor.
  3946. * Cross cursor:                          Row cursor.
  3947. * Cursor moving: Section 4.2.2.
  3948. * Cursor through tabs: Chapter 7.
  3949. * Cut: Section 3.3.3.
  3950. * CXX options: Section 3.9.2.5.
  3951. * Debugging: Section 1.5.2.
  3952. * Debugging info: Section 3.9.2.3.
  3953. * Debugging RHIDE <1>:                   Show GDB commands.
  3954. * Debugging RHIDE:                       show process information.
  3955. * Debugging with RHIDE: Section 3.7.
  3956. * Debugging, dual display:               Use dual display.
  3957. * Debugging, edit the flags: Section 3.9.6.12.
  3958. * Default file mask: Section 3.2.1.
  3959. * Default language: Chapter 7.
  3960. * Default project file: Chapter 7.
  3961. * Default project file, more than one: Chapter 7.
  3962. * Define your own reserved words: Section 3.9.6.14.
  3963. * Defines: Section 3.9.5.
  3964. * Delete a file from the project: Section 3.8.4.
  3965. * Delete the selected text: Section 3.3.7.
  3966. * Deleting commands: Section 4.2.1.
  3967. * Dependencies for a file: Section 3.8.6.
  3968. * Dependencies in makefile:              all dependencies in makefile.
  3969. * Dependencies, checking: Section 4.10.
  3970. * Dependencies, problems with it: Section 4.3.1.
  3971. * Dialog function keys: Section 4.12.
  3972. * Different name for RHIDE: Chapter 7.
  3973. * Directory for temp files: Section 2.3.
  3974. * Disable shadows:                       Use no shadows.
  3975. * Disassembler: Section 3.7.5.
  3976. * Donations to the author: Chapter 7.
  3977. * DOS: Section 3.2.6.
  3978. * Dual display: Section 5.2.
  3979. * Dual display when debugging:           Use dual display.
  3980. * Dual display with RHGDB: Chapter 6.
  3981. * Edit a file: Section 3.2.1.
  3982. * Edit the list of C flags: Section 3.9.6.7.
  3983. * Edit the list of C++ flags: Section 3.9.6.8.
  3984. * Edit the list of debugging flags: Section 3.9.6.12.
  3985. * Edit the list of Fortran flags: Section 3.9.6.10.
  3986. * Edit the list of optimization flags: Section 3.9.6.13.
  3987. * Edit the list of Pascal flags: Section 3.9.6.9.
  3988. * Edit the list of reserved words: Section 3.9.6.5.
  3989. * Edit the list of reserved words for Pascal: Section 3.9.6.6.
  3990. * Edit the list of user defined words: Section 3.9.6.14.
  3991. * Edit the list of warning flags: Section 3.9.6.11.
  3992. * Editor: Section 4.2.
  3993. * Editor options: Section 3.9.6.2.
  3994. * Editor, block commands: Section 4.2.4.
  3995. * Editor, cursor moving: Section 4.2.2.
  3996. * Editor, erasing commands: Section 4.2.1.
  3997. * Editor, other useful commands: Section 4.2.5.
  3998. * Editor, select some text: Section 4.2.3.
  3999. * Environment variables <1>: Section 3.9.1.
  4000. * Environment variables <2>: Section 1.8.
  4001. * Environment variables: Section 1.8.1.
  4002. * Erasing commands: Section 4.2.1.
  4003. * Executing your program: Section 3.5.1.
  4004. * Exit: Section 3.2.7.
  4005. * Expanding tabs: Section 3.3.10.
  4006. * File caching:                          No file caching.
  4007. * File open dialog: Section 3.2.1.
  4008. * Files for syntax help: Section 3.11.3.2.
  4009. * Finding text: Section 3.4.1.
  4010. * Flags for C files: Section 3.9.2.4.
  4011. * Flags for C++ files: Section 3.9.2.5.
  4012. * Flags for Fortran files: Section 3.9.2.7.
  4013. * Flags for Pascal files: Section 3.9.2.6.
  4014. * Fortran flags, edit them: Section 3.9.6.10.
  4015. * Fortran options: Section 3.9.2.7.
  4016. * Free memory:                           show free memory.
  4017. * Function call stack: Section 3.7.6.
  4018. * Generating of warnings: Section 3.9.2.1.
  4019. * Global editor options: Section 3.9.6.2.
  4020. * Goto a line number: Section 3.4.4.
  4021. * GPC, -automake: Section 3.8.8.
  4022. * Header files: Section 3.9.1.1.
  4023. * Help: Section 3.11.1.
  4024. * Help about a function: Section 3.11.3.1.
  4025. * Help about help: Section 3.11.6.
  4026. * Help about the Info-viewer: Section 3.11.6.
  4027. * Help system: Section 4.14.
  4028. * Highlight the syntax: Section 4.9.
  4029. * Highlighting the matching parenthesis: Match pair highlight.
  4030. * Highlighting the syntax:               syntax highlighting.
  4031. * Hints: Section 4.3.
  4032. * How the editor works: Section 4.2.
  4033. * Include directories: Section 3.9.1.1.
  4034. * Include files: Section 3.9.1.1.
  4035. * Info Viewer: Section 4.14.
  4036. * Input line: Section 4.12.
  4037. * Intelligent C indenting:               Intelligent C indenting.
  4038. * Language, setting the default: Chapter 7.
  4039. * Languages: Section 1.5.1.
  4040. * Latest version of RHIDE: Chapter 7.
  4041. * Leaving RHIDE: Section 3.2.7.
  4042. * LFN: Section 2.3.
  4043. * Libc reference: Section 3.11.5.
  4044. * Libraries: Section 3.9.3.
  4045. * Libraries in a project: Chapter 7.
  4046. * Library search path: Section 3.9.1.2.
  4047. * Link the program: Section 3.6.3.
  4048. * Linker options: Section 3.9.4.
  4049. * Linux: Section 2.6.
  4050. * List of all windows: Section 3.10.8.
  4051. * Listbox: Section 4.12.
  4052. * Lists: Section 4.12.
  4053. * Load options <1>: Section 3.9.8.
  4054. * Load options: Section 2.7.3.
  4055. * Loading a file: Section 3.2.1.
  4056. * Local options: Section 4.4.4.
  4057. * Local options for a project item: Section 3.8.5.
  4058. * Long filenames: Section 2.3.
  4059. * Macro executing: Section 3.3.12.3.
  4060. * Macro recording: Section 3.3.12.1.
  4061. * Macro stop recording: Section 3.3.12.2.
  4062. * Macros <1>: Section 4.13.
  4063. * Macros: Section 3.3.12.
  4064. * Main targetname: Section 3.8.7.
  4065. * Make: Section 3.6.2.
  4066. * Make clear: Section 3.8.10.
  4067. * Makefile: Section 3.8.11.
  4068. * Mark some text: Section 4.2.3.
  4069. * Message window: Section 4.8.
  4070. * Miscellaneous commands: Section 4.2.5.
  4071. * Mouse options:                         Mouse options.
  4072. * Moving a window: Section 3.10.1.
  4073. * MS-DOS: Section 3.2.6.
  4074. * Name of the main target: Section 3.8.7.
  4075. * Next message: Section 3.4.6.
  4076. * Next window: Section 3.10.5.
  4077. * No shadows:                            Use no shadows.
  4078. * Object file search path: Section 3.9.1.3.
  4079. * Object files in a different directory: Section 3.9.1.3.
  4080. * Open a file: Section 3.2.1.
  4081. * Open a project: Section 3.8.1.
  4082. * Optimal filling:                       Optimal fill.
  4083. * Optimizations, edit the flags: Section 3.9.6.13.
  4084. * Optimizing the code: Section 3.9.2.2.
  4085. * Options for a single file: Section 3.8.5.
  4086. * Options for the linker: Section 3.9.4.
  4087. * Order of the project items: Section 4.4.1.
  4088. * OS/2: Section 2.4.
  4089. * Other compilers: Section 4.7.
  4090. * Pascal flags, edit them: Section 3.9.6.9.
  4091. * Pascal options: Section 3.9.2.6.
  4092. * Pascal reserved words: Section 3.9.6.6.
  4093. * Paste: Section 3.3.5.
  4094. * Paste from Windows clipboard: Section 3.3.9.
  4095. * Persistent blocks:                     Persistent blocks.
  4096. * Playing the macro: Section 3.3.12.3.
  4097. * Preprocessing Assembler files: Section 2.1.
  4098. * Previous message: Section 3.4.7.
  4099. * Previous window: Section 3.10.6.
  4100. * Problems: Section 4.3.
  4101. * Project window: Section 4.4.
  4102. * Pseudo Macros: Section 4.13.
  4103. * Quit: Section 3.2.7.
  4104. * Radiobuttons: Section 4.12.
  4105. * RCS: Section 4.15.
  4106. * Rebuilding RHIDE: Chapter 7.
  4107. * Redirecting stderr:                    redirect stderr.
  4108. * Redirecting stdout:                    redirect stdout.
  4109. * Redo: Section 3.3.2.
  4110. * Remove a file from the project: Section 3.8.4.
  4111. * Removing all targets: Section 3.8.10.
  4112. * Removing the internal dependencies: Section 3.8.9.
  4113. * Repeat of replacing: Section 3.4.3.
  4114. * Repeat of searching: Section 3.4.3.
  4115. * Replacing text: Section 3.4.2.
  4116. * Reporting bugs <1>: Chapter 7.
  4117. * Reporting bugs: Section 3.1.2.
  4118. * Reserved words: Section 3.9.6.5.
  4119. * Resizing a window: Section 3.10.1.
  4120. * Reverse mouse buttons:                 Mouse options.
  4121. * RHIDE project files: Chapter 7.
  4122. * RHIDE, latest version: Chapter 7.
  4123. * rhide.env: Section 1.8.1.
  4124. * rhide.env, Samples: Section 1.8.1.
  4125. * Row cursor:                            Row cursor.
  4126. * Running your program: Section 3.5.1.
  4127. * Sample projects: Chapter 7.
  4128. * Save all files to disk: Section 3.2.5.
  4129. * Save options <1>: Section 2.7.3.
  4130. * Save options:                          Save options.
  4131. * Save the file to disk: Section 3.2.3.
  4132. * Save the file under a different name: Section 3.2.4.
  4133. * Search a function: Section 3.4.5.
  4134. * Search path for include files: Section 3.9.1.1.
  4135. * Search path for libraries: Section 3.9.1.2.
  4136. * Search path for object files: Section 3.9.1.3.
  4137. * Search path for source files: Section 3.9.1.4.
  4138. * Searching text: Section 3.4.1.
  4139. * Searchmethod for syntax help: Section 3.11.3.3.
  4140. * Select a window: Section 4.1.
  4141. * Select the project window: Section 3.10.9.
  4142. * Selecting some text: Section 4.2.3.
  4143. * Show free memory:                      show free memory.
  4144. * Show the includes for a file: Section 3.8.6.
  4145. * Show the project window: Section 3.10.9.
  4146. * Show the user screen: Section 3.10.10.
  4147. * Show what RHIDE does:                  show process information.
  4148. * Single file compiling: Section 4.3.
  4149. * Size for the tabs:                     Tabsize.
  4150. * Source file search path: Section 3.9.1.4.
  4151. * Source files in a different directory: Section 3.9.1.4.
  4152. * Space as part of an argument: Section 2.2.
  4153. * Specs: Section 1.8.1.
  4154. * Standard headers: Section 3.9.1.5.
  4155. * Start: Section 1.5.
  4156. * Starting a macro: Section 3.3.12.1.
  4157. * Starting your program: Section 3.5.1.
  4158. * stderr redirecting:                    redirect stderr.
  4159. * stdout redirecting:                    redirect stdout.
  4160. * Stopping a macro: Section 3.3.12.2.
  4161. * Store a file: Section 3.2.3.
  4162. * Suppressing of warnings: Section 3.9.2.1.
  4163. * Syntax help: Section 3.11.3.1.
  4164. * Syntax help, Index:                    Index for syntax help.
  4165. * Syntax help, Options: Section 3.11.3.3.
  4166. * Syntax highlighting <1>:               syntax highlighting.
  4167. * Syntax highlighting: Section 4.9.
  4168. * Tab size:                              Tabsize.
  4169. * Tabs:                                  Use tabs.
  4170. * Tabs to spaces: Section 3.3.10.
  4171. * Temp directory: Section 2.3.
  4172. * temporary do to DOS: Section 3.2.6.
  4173. * Text mode:                             Screen mode.
  4174. * Tile the windows: Section 3.10.3.
  4175. * Transparent blocks:                    Transparent Blocks.
  4176. * Turbo Vision: Section 4.11.
  4177. * Type of the main target: Section 3.8.7.
  4178. * Undo: Section 3.3.1.
  4179. * Use of libraries: Chapter 7.
  4180. * User defined compiler:                 User defined compiler.
  4181. * User defined reserved words: Section 3.9.6.14.
  4182. * User screen: Section 3.10.10.
  4183. * Using the dialog: Section 4.12.
  4184. * Using the macro: Section 3.3.12.3.
  4185. * Using true tabs:                       Use tabs.
  4186. * Version of RHIDE: Section 3.1.1.
  4187. * Video mode:                            Screen mode.
  4188. * Warnings: Section 3.9.2.1.
  4189. * Warnings, edit the flags: Section 3.9.6.11.
  4190. * Window, close it: Section 3.10.7.
  4191. * Window, moving: Section 3.10.1.
  4192. * Window, resizing: Section 3.10.1.
  4193. * Window, select it: Section 4.1.
  4194. * Window, select the next: Section 3.10.5.
  4195. * Window, select the previous: Section 3.10.6.
  4196. * Window, zoom it: Section 3.10.2.
  4197. * Windows: Section 3.10.
  4198. * Windows 95: Section 2.3.
  4199. * Windows, cascade them: Section 3.10.4.
  4200. * Windows, show a list of all: Section 3.10.8.
  4201. * Windows, tile all: Section 3.10.3.
  4202. * Write a makefile: Section 3.8.11.
  4203. * xterm, running RHIDE in it: Section 2.6.
  4204. * Zoom a window: Section 3.10.2.
  4205.  
  4206. 9. Index of key commands
  4207. ************************
  4208.  
  4209.  
  4210.  
  4211. * <Alt+0> | List of all windows: Section 3.10.8.
  4212. * <Alt+Backspace> | Undo: Section 3.3.1.
  4213. * <Alt+F10> | Macro stop: Section 3.3.12.2.
  4214. * <Alt+F2> | Jump to function: Section 3.4.5.
  4215. * <Alt+F3> | Close a window: Section 3.10.7.
  4216. * <Alt+F5> | User screen: Section 3.10.10.
  4217. * <Alt+F7> | Previous message: Section 3.4.7.
  4218. * <Alt+F8> | Next message: Section 3.4.6.
  4219. * <Alt+F9> | Compile: Section 3.6.1.
  4220. * <Alt+SPACE> | System Menu: Section 3.1.
  4221. * <Alt+X> | Leaving RHIDE: Section 3.2.7.
  4222. * <Alt> | Selecting a window: Section 4.1.
  4223. * <Backspace> | Erase a character: Section 4.2.1.
  4224. * <Ctrl+A> | Word left: Section 4.2.2.
  4225. * <Ctrl+Backspace> | Delete to the previous word: Section 4.2.1.
  4226. * <Ctrl+Break> | Interrupting the compilers: Section 1.3.
  4227. * <Ctrl+C> | Ignoring: Section 1.3.
  4228. * <Ctrl+C> | Page down: Section 4.2.2.
  4229. * <Ctrl+D> | Cursor right: Section 4.2.2.
  4230. * <Ctrl+Del> | Delete selected text: Section 4.2.3.
  4231. * <Ctrl+E> | Cursor up: Section 4.2.2.
  4232. * <Ctrl+F10> | Macro play: Section 3.3.12.3.
  4233. * <Ctrl+F1> | Context help: Section 4.14.
  4234. * <Ctrl+F1> | List of functions: Section 5.5.2.
  4235. * <Ctrl+F1> | Syntax help: Section 3.11.3.1.
  4236. * <Ctrl+F2> | Program reset: Section 3.5.5.
  4237. * <Ctrl+F3> | Call stack: Section 3.7.6.
  4238. * <Ctrl+F4> | Evaluate/Modify: Section 3.7.2.
  4239. * <Ctrl+F5> | Resize/move a window: Section 3.10.1.
  4240. * <Ctrl+F7> | Watch an expression: Section 3.7.3.
  4241. * <Ctrl+F8> | Toggle a breakpoint: Section 3.7.1.
  4242. * <Ctrl+F9> | Run: Section 3.5.1.
  4243. * <Ctrl+F> | Word right: Section 4.2.2.
  4244. * <Ctrl+G> | Delete a character: Section 4.2.1.
  4245. * <Ctrl+H> | Delete a character: Section 4.2.1.
  4246. * <Ctrl+I> | Show includes: Section 3.8.6.
  4247. * <Ctrl+Ins> | Copy <1>: Section 4.2.3.
  4248. * <Ctrl+Ins> | Copy: Section 3.3.4.
  4249. * <Ctrl+J> | Goto line: Section 3.4.4.
  4250. * <Ctrl+J> | Jump to a line: Section 4.2.5.
  4251. * <Ctrl+K+?> | Set a marker: Section 4.2.5.
  4252. * <Ctrl+K+B> | Start of block: Section 4.2.4.
  4253. * <Ctrl+K+C> | Paste: Section 4.2.3.
  4254. * <Ctrl+K+H> | Unselect: Section 4.2.3.
  4255. * <Ctrl+K+I> | Indent block: Section 4.2.4.
  4256. * <Ctrl+K+K> | Copy: Section 4.2.3.
  4257. * <Ctrl+K+K> | End of block: Section 4.2.4.
  4258. * <Ctrl+K+M> | To upper: Section 4.2.4.
  4259. * <Ctrl+K+O> | To lower: Section 4.2.4.
  4260. * <Ctrl+K+R> | Read block from file: Section 4.2.4.
  4261. * <Ctrl+K+Shift+Tab> | Block unindenting: Section 4.2.4.
  4262. * <Ctrl+K+Tab> | Block indenting: Section 4.2.4.
  4263. * <Ctrl+K+U> | Unindent block: Section 4.2.4.
  4264. * <Ctrl+K+V> | Move block: Section 4.2.4.
  4265. * <Ctrl+K+W> | Write block to file: Section 4.2.4.
  4266. * <Ctrl+K+Y> | Cut: Section 4.2.3.
  4267. * <Ctrl+L> | Again find/replace: Section 4.2.3.
  4268. * <Ctrl+L> | Search again: Section 3.4.3.
  4269. * <Ctrl+O> | Auto indent: Section 4.2.5.
  4270. * <Ctrl+O> | Local options <1>: Section 4.4.4.
  4271. * <Ctrl+O> | Local options: Section 3.8.5.
  4272. * <Ctrl+PgDown> | Bottom of file: Section 4.2.2.
  4273. * <Ctrl+PgUp> | Begin of file: Section 4.2.2.
  4274. * <Ctrl+Q+?> | Jump to a marker: Section 4.2.5.
  4275. * <Ctrl+Q+A> | Replace <1>: Section 4.2.3.
  4276. * <Ctrl+Q+A> | Replace: Section 3.4.2.
  4277. * <Ctrl+Q+C> | End of file: Section 4.2.2.
  4278. * <Ctrl+Q+D> | End of line: Section 4.2.2.
  4279. * <Ctrl+Q+F> | Find <1>: Section 3.4.1.
  4280. * <Ctrl+Q+F> | Find: Section 4.2.3.
  4281. * <Ctrl+Q+H> | Delete to the beginning of line: Section 4.2.1.
  4282. * <Ctrl+Q+R> | Start of file: Section 4.2.2.
  4283. * <Ctrl+Q+S> | Start of line: Section 4.2.2.
  4284. * <Ctrl+Q+Y> | Delete to the end of line: Section 4.2.1.
  4285. * <Ctrl+R> | Page up: Section 4.2.2.
  4286. * <Ctrl+S> | Cursor left: Section 4.2.2.
  4287. * <Ctrl+T> | Delete to the next word: Section 4.2.1.
  4288. * <Ctrl+V> | Overwrite mode: Section 4.2.5.
  4289. * <Ctrl+X> | Cursor down: Section 4.2.2.
  4290. * <Ctrl+Y> | Erase a line: Section 4.2.1.
  4291. * <Del> | Close a window: Section 3.10.8.
  4292. * <Del> | Erase a character: Section 4.2.1.
  4293. * <Del> | Remove a project item: Section 3.8.4.
  4294. * <Del> | Remove from the watches: Section 5.3.3.
  4295. * <ENTER> | Activate a button: Section 4.12.
  4296. * <ENTER> | Jump to the source line: Section 4.8.
  4297. * <ENTER> | Open a project item: Section 4.4.2.
  4298. * <ENTER> | Open an include file: Section 4.4.3.
  4299. * <ENTER> | Select a item in a Listbox: Section 4.12.
  4300. * <ENTER> | Select a menu entry: Section 4.11.
  4301. * <ENTER> | Select a message: Section 4.3.
  4302. * <ENTER> | Select a window: Section 3.10.8.
  4303. * <ENTER> | Select menu item: Chapter 3.
  4304. * <ESC> | Leaving a dialog <1>: Section 3.2.1.
  4305. * <ESC> | Leaving a dialog <2>: Section 3.9.2.8.
  4306. * <ESC> | Leaving a dialog: Section 4.12.
  4307. * <F10> | Activate menu bar: Section 4.11.
  4308. * <F10> | Menu <1>: Chapter 3.
  4309. * <F10> | Menu: Section 1.5.
  4310. * <F1> | Help: Section 3.11.1.
  4311. * <F1> | Help about the INFO viewer: Section 3.11.1.
  4312. * <F1> | Help about the INFO Viewer: Section 4.14.
  4313. * <F2> | saving a file: Section 3.2.3.
  4314. * <F3> | open a file: Section 3.2.1.
  4315. * <F4> | Go to cursor: Section 3.5.4.
  4316. * <F5> | Zoom a window: Section 3.10.2.
  4317. * <F6> | Next window: Section 3.10.5.
  4318. * <F7> | Trace into: Section 3.5.3.
  4319. * <F8> | Step over: Section 3.5.2.
  4320. * <F9> | Make: Section 3.6.2.
  4321. * <Ins> | Add a project item: Section 3.8.3.
  4322. * <Shift+> | Resizing a window: Section 3.10.1.
  4323. * <Shift+Del> | Cut <1>: Section 4.2.3.
  4324. * <Shift+Del> | Cut: Section 3.3.3.
  4325. * <Shift+F10> | Macro start: Section 3.3.12.1.
  4326. * <Shift+F4> | Go to cursor (No display swap): Section 3.5.4.
  4327. * <Shift+F6> | Previous window: Section 3.10.6.
  4328. * <Shift+F7> | Trace into (No display swap): Section 3.5.3.
  4329. * <Shift+F8> | Step over (No display swap): Section 3.5.2.
  4330. * <Shift+Ins> | Paste <1>: Section 4.2.3.
  4331. * <Shift+Ins> | Paste: Section 3.3.5.
  4332. * <Shift+Space> | Execute a macro: Section 4.2.5.
  4333. * <Shift+Tab> | Previous input line: Section 3.9.3.
  4334. * <Shift> | Select text: Section 4.2.3.
  4335. * <SPACE> | Activate a flag: Section 3.9.2.8.
  4336. * <SPACE> | Toggle an option: Section 4.12.
  4337. * <Tab> | Next input line: Section 3.9.3.
  4338. * Activate a button | <ENTER> |: Section 4.12.
  4339. * Activate a flag | <SPACE> |: Section 3.9.2.8.
  4340. * Activate menu bar | <F10> |: Section 4.11.
  4341. * Add a project item | <Ins> |: Section 3.8.3.
  4342. * Again find/replace | <Ctrl+L> |: Section 4.2.3.
  4343. * Auto indent | <Ctrl+O> |: Section 4.2.5.
  4344. * Begin of file | <Ctrl+PgUp> |: Section 4.2.2.
  4345. * Block indenting | <Ctrl+K+Tab> |: Section 4.2.4.
  4346. * Block unindenting | <Ctrl+K+Shift+Tab> |: Section 4.2.4.
  4347. * Bottom of file | <Ctrl+PgDown> |: Section 4.2.2.
  4348. * Call stack | <Ctrl+F3> |: Section 3.7.6.
  4349. * Close a window | <Alt+F3> |: Section 3.10.7.
  4350. * Close a window | <Del> |: Section 3.10.8.
  4351. * Compile | <Alt+F9> |: Section 3.6.1.
  4352. * Context help | <Ctrl+F1> |: Section 4.14.
  4353. * Copy | <Ctrl+Ins> | <1>: Section 3.3.4.
  4354. * Copy | <Ctrl+Ins> |: Section 4.2.3.
  4355. * Copy | <Ctrl+K+K> |: Section 4.2.3.
  4356. * Cursor down | <Ctrl+X> |: Section 4.2.2.
  4357. * Cursor left | <Ctrl+S> |: Section 4.2.2.
  4358. * Cursor right | <Ctrl+D> |: Section 4.2.2.
  4359. * Cursor up | <Ctrl+E> |: Section 4.2.2.
  4360. * Cut | <Ctrl+K+Y> |: Section 4.2.3.
  4361. * Cut | <Shift+Del> | <1>: Section 4.2.3.
  4362. * Cut | <Shift+Del> |: Section 3.3.3.
  4363. * Delete a character | <Ctrl+G> |: Section 4.2.1.
  4364. * Delete a character | <Ctrl+H> |: Section 4.2.1.
  4365. * Delete selected text | <Ctrl+Del> |: Section 4.2.3.
  4366. * Delete to the beginning of line | <Ctrl+Q+H> |: Section 4.2.1.
  4367. * Delete to the end of line | <Ctrl+Q+Y> |: Section 4.2.1.
  4368. * Delete to the next word | <Ctrl+T> |: Section 4.2.1.
  4369. * Delete to the previous word | <Ctrl+Backspace> |: Section 4.2.1.
  4370. * End of block | <Ctrl+K+K> |: Section 4.2.4.
  4371. * End of file | <Ctrl+Q+C> |: Section 4.2.2.
  4372. * End of line | <Ctrl+Q+D> |: Section 4.2.2.
  4373. * Erase a character | <Backspace> |: Section 4.2.1.
  4374. * Erase a character | <Del> |: Section 4.2.1.
  4375. * Erase a line | <Ctrl+Y> |: Section 4.2.1.
  4376. * Evaluate/Modify | <Ctrl+F4> |: Section 3.7.2.
  4377. * Execute a macro | <Shift+Space> |: Section 4.2.5.
  4378. * Find | <Ctrl+Q+F> | <1>: Section 4.2.3.
  4379. * Find | <Ctrl+Q+F> |: Section 3.4.1.
  4380. * Go to cursor (No display swap) | <Shift+F4> |: Section 3.5.4.
  4381. * Go to cursor | <F4> |: Section 3.5.4.
  4382. * Goto line | <Ctrl+J> |: Section 3.4.4.
  4383. * Help about the INFO Viewer | <F1> |: Section 4.14.
  4384. * Help about the INFO viewer | <F1> |: Section 3.11.1.
  4385. * Help | <F1> |: Section 3.11.1.
  4386. * Ignoring | <Ctrl+C> |: Section 1.3.
  4387. * Indent block | <Ctrl+K+I> |: Section 4.2.4.
  4388. * Interrupting the compilers | <Ctrl+Break> |: Section 1.3.
  4389. * Jump to a line | <Ctrl+J> |: Section 4.2.5.
  4390. * Jump to a marker | <Ctrl+Q+?> |: Section 4.2.5.
  4391. * Jump to function | <Alt+F2> |: Section 3.4.5.
  4392. * Jump to the source line | <ENTER> |: Section 4.8.
  4393. * Leaving a dialog | <ESC> | <1>: Section 4.12.
  4394. * Leaving a dialog | <ESC> | <2>: Section 3.2.1.
  4395. * Leaving a dialog | <ESC> |: Section 3.9.2.8.
  4396. * Leaving RHIDE | <Alt+X> |: Section 3.2.7.
  4397. * List of all windows | <Alt+0> |: Section 3.10.8.
  4398. * List of functions | <Ctrl+F1> |: Section 5.5.2.
  4399. * Local options | <Ctrl+O> | <1>: Section 3.8.5.
  4400. * Local options | <Ctrl+O> |: Section 4.4.4.
  4401. * Macro play | <Ctrl+F10> |: Section 3.3.12.3.
  4402. * Macro start | <Shift+F10> |: Section 3.3.12.1.
  4403. * Macro stop | <Alt+F10> |: Section 3.3.12.2.
  4404. * Make | <F9> |: Section 3.6.2.
  4405. * Menu | <F10> | <1>: Chapter 3.
  4406. * Menu | <F10> |: Section 1.5.
  4407. * Move block | <Ctrl+K+V> |: Section 4.2.4.
  4408. * Next input line | <Tab> |: Section 3.9.3.
  4409. * Next message | <Alt+F8> |: Section 3.4.6.
  4410. * Next window | <F6> |: Section 3.10.5.
  4411. * open a file | <F3> |: Section 3.2.1.
  4412. * Open a project item | <ENTER> |: Section 4.4.2.
  4413. * Open an include file | <ENTER> |: Section 4.4.3.
  4414. * Overwrite mode | <Ctrl+V> |: Section 4.2.5.
  4415. * Page down | <Ctrl+C> |: Section 4.2.2.
  4416. * Page up | <Ctrl+R> |: Section 4.2.2.
  4417. * Paste | <Ctrl+K+C> |: Section 4.2.3.
  4418. * Paste | <Shift+Ins> | <1>: Section 3.3.5.
  4419. * Paste | <Shift+Ins> |: Section 4.2.3.
  4420. * Previous input line | <Shift+Tab> |: Section 3.9.3.
  4421. * Previous message | <Alt+F7> |: Section 3.4.7.
  4422. * Previous window | <Shift+F6> |: Section 3.10.6.
  4423. * Program reset | <Ctrl+F2> |: Section 3.5.5.
  4424. * Read block from file | <Ctrl+K+R> |: Section 4.2.4.
  4425. * Remove a project item | <Del> |: Section 3.8.4.
  4426. * Remove from the watches | <Del> |: Section 5.3.3.
  4427. * Replace | <Ctrl+Q+A> | <1>: Section 3.4.2.
  4428. * Replace | <Ctrl+Q+A> |: Section 4.2.3.
  4429. * Resize/move a window | <Ctrl+F5> |: Section 3.10.1.
  4430. * Resizing a window | <Shift+> |: Section 3.10.1.
  4431. * Run | <Ctrl+F9> |: Section 3.5.1.
  4432. * saving a file | <F2> |: Section 3.2.3.
  4433. * Search again | <Ctrl+L> |: Section 3.4.3.
  4434. * Select a item in a Listbox | <ENTER> |: Section 4.12.
  4435. * Select a menu entry | <ENTER> |: Section 4.11.
  4436. * Select a message | <ENTER> |: Section 4.3.
  4437. * Select a window | <ENTER> |: Section 3.10.8.
  4438. * Select menu item | <ENTER> |: Chapter 3.
  4439. * Select text | <Shift> |: Section 4.2.3.
  4440. * Selecting a window | <Alt> |: Section 4.1.
  4441. * Set a marker | <Ctrl+K+?> |: Section 4.2.5.
  4442. * Show includes | <Ctrl+I> |: Section 3.8.6.
  4443. * Start of block | <Ctrl+K+B> |: Section 4.2.4.
  4444. * Start of file | <Ctrl+Q+R> |: Section 4.2.2.
  4445. * Start of line | <Ctrl+Q+S> |: Section 4.2.2.
  4446. * Step over (No display swap) | <Shift+F8> |: Section 3.5.2.
  4447. * Step over | <F8> |: Section 3.5.2.
  4448. * Syntax help | <Ctrl+F1> |: Section 3.11.3.1.
  4449. * System Menu | <Alt+SPACE> |: Section 3.1.
  4450. * To lower | <Ctrl+K+O> |: Section 4.2.4.
  4451. * To upper | <Ctrl+K+M> |: Section 4.2.4.
  4452. * Toggle a breakpoint | <Ctrl+F8> |: Section 3.7.1.
  4453. * Toggle an option | <SPACE> |: Section 4.12.
  4454. * Trace into (No display swap) | <Shift+F7> |: Section 3.5.3.
  4455. * Trace into | <F7> |: Section 3.5.3.
  4456. * Undo | <Alt+Backspace> |: Section 3.3.1.
  4457. * Unindent block | <Ctrl+K+U> |: Section 4.2.4.
  4458. * Unselect | <Ctrl+K+H> |: Section 4.2.3.
  4459. * User screen | <Alt+F5> |: Section 3.10.10.
  4460. * Watch an expression | <Ctrl+F7> |: Section 3.7.3.
  4461. * Word left | <Ctrl+A> |: Section 4.2.2.
  4462. * Word right | <Ctrl+F> |: Section 4.2.2.
  4463. * Write block to file | <Ctrl+K+W> |: Section 4.2.4.
  4464. * Zoom a window | <F5> |: Section 3.10.2.
  4465.  
  4466.